CodeIgniter和utf8函数

时间:2011-06-20 07:27:39

标签: php codeigniter utf-8 multilingual

我的网站需要支持多种语言,因此需要在整个网站上处理utf8数据。我理解如何为与数据库交互的utf8数据配置codeigniter。我的问题是codeigniter在使用utf8编码时如何处理表单字段规则之类的东西?例如使用strlen,对于utf8,strlen会有所不同,所以你需要使用mbstring函数来代替mb_strlen。 codeigniter是否有一个自动处理的设置,或者我需要在codeigniter中配置一些东西吗?

2 个答案:

答案 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)

不可以,但您可以扩展表单验证类以使用您自己的验证函数。