2016-11-26 75 views
0

我在Codeigniter中构建应用程序,并试图使用表单验证库中的valid_url来检查域是否有效(例如“hæi.no”)。由于不允许挪威字符,所以这不起作用。检查有效网址并允许使用挪威字符的最佳解决方法是什么?例如“ÆØÅ”,“æ?å”?如何检查URL是否与Codeigniter中的挪威字符一致有效

+0

我可能是错的,但我不知道这些字符的URL是有效的,看[这里] (http://stackoverflow.com/questions/1547899/which-characters-make-a-url-invalid) –

+0

@RoshanBhumbra许多域名都是IDN兼容的,包括.no,这是这里的重要部分。因此,我不能使用本机PHP验证,例如FILTER_VALIDATE_URL。 – kanarifugl

+0

我的回答有帮助吗? –

回答

0

你可以创建自己的表单验证库,我个人认为它比使用回调更优雅。

在你的控制器

$this->load->library(array('form_validation', 'My_form_validation')); 

这样就可以保证在库被加载,你需要他们既作为MY_Form_validation延伸CI_Form_validation

/application/libraries/My_form_validation.php

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class MY_Form_validation extends CI_Form_validation 
{ 
    /** 
    * Reference to the CodeIgniter instance 
    * 
    * @var object 
    */ 
    protected $CI; 

    function __construct($config = array()) 
    { 
     $this->CI =& get_instance(); 

     parent::__construct($config); 
    } 

    function series_exists($series_id) 
    { 
     $this->CI->db 
      ->select('COUNT(`id`)') 
      ->where('id', $series_id); 
     $rows = $this->CI->db->get('series')->result()[0]; 

     return $rows == 1; 
    } 
} 

你可以在这个例子中看到series_exists函数,这将被称为正常的验证规则a它只需要一个参数。你可以用你自己的函数替换它,它必须有唯一的名字,例如my_valid_url

添加函数名到你的验证规则,在我的例子会是这个样子 'required|integer|series_exists'