0
我在Codeigniter中构建应用程序,并试图使用表单验证库中的valid_url
来检查域是否有效(例如“hæi.no”)。由于不允许挪威字符,所以这不起作用。检查有效网址并允许使用挪威字符的最佳解决方法是什么?例如“ÆØÅ”,“æ?å”?如何检查URL是否与Codeigniter中的挪威字符一致有效
我在Codeigniter中构建应用程序,并试图使用表单验证库中的valid_url
来检查域是否有效(例如“hæi.no”)。由于不允许挪威字符,所以这不起作用。检查有效网址并允许使用挪威字符的最佳解决方法是什么?例如“ÆØÅ”,“æ?å”?如何检查URL是否与Codeigniter中的挪威字符一致有效
你可以创建自己的表单验证库,我个人认为它比使用回调更优雅。
在你的控制器
$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'
我可能是错的,但我不知道这些字符的URL是有效的,看[这里] (http://stackoverflow.com/questions/1547899/which-characters-make-a-url-invalid) –
@RoshanBhumbra许多域名都是IDN兼容的,包括.no,这是这里的重要部分。因此,我不能使用本机PHP验证,例如FILTER_VALIDATE_URL。 – kanarifugl
我的回答有帮助吗? –