Функции CodeIgniter и utf8 - PullRequest
       19

Функции CodeIgniter и utf8

1 голос
/ 20 июня 2011

Мой сайт должен поддерживать несколько языков, поэтому он должен обрабатывать данные utf8 по всему сайту. Я понимаю, как настроить codeigniter для данных utf8 в отношении взаимодействия с базой данных. Мой вопрос заключается в том, как codeigniter обрабатывает такие вещи, как правила для полей формы при использовании кодировки utf8? Например, используя strlen, для utf8 strlen будет другим, поэтому вместо этого вам нужно будет использовать функцию mbstring, mb_strlen. Есть ли у codeigniter настройка, которая автоматически обрабатывает это, или мне нужно что-то настроить внутри codeigniter для этого?

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Он использует 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 используйте модификатор Юникод:

// 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;
}
0 голосов
/ 20 июня 2011

Нет, это не так, но вы можете расширить класс проверки формы, чтобы использовать собственные функции проверки.

...