我的网站需要支持多种语言,因此需要在整个网站上处理utf8数据。我理解如何为与数据库交互的utf8数据配置codeigniter。我的问题是codeigniter在使用utf8编码时如何处理表单字段规则之类的东西?例如使用strlen,对于utf8,strlen会有所不同,所以你需要使用mbstring函数来代替mb_strlen。 codeigniter是否有一个自动处理的设置,或者我需要在codeigniter中配置一些东西吗?
答案 0 :(得分:1)
如果可以访问,则默认使用mb_strlen:
//below default min_length function of CI_Form_Validation lib as an example
/**
* Minimum Length
*
* @access public
* @param string
* @param value
* @return bool
*/
function min_length($str, $val)
{
if (preg_match("/[^0-9]/", $val))
{
return FALSE;
}
if (function_exists('mb_strlen'))
{
return (mb_strlen($str) < $val) ? FALSE : TRUE;
}
return (strlen($str) < $val) ? FALSE : TRUE;
}
对于preg_match函数,使用unicode修饰符:
// native CI alpha function:
function alpha($str)
{
return ( ! preg_match("/^([a-z])+$/i", $str)) ? FALSE : TRUE;
}
// ready for unicode using u modifier in regex pattern
function alpha($str)
{
return ( ! preg_match("/^([a-z])+$/iu", $str)) ? FALSE : TRUE;
}
答案 1 :(得分:0)
不可以,但您可以扩展表单验证类以使用您自己的验证函数。