Проверка формы CodeIgniter для китайских слов

Я использую библиотеку проверки формы в CodeIgniter. Ниже конфиг попробуйте включить все числа, английские слова, китайские слова и пробел. Но это не работа.

$config = array(
array(
'field' => 'keywords',
'label' => 'keywords',
'rules' => 'regex_match[/[a-zA-Z0-9 \u4e00-\u9fa5]+$/]'
)
);

Однако, если я выведу ‘u4e00- \ u9fa5’, это работа.

$config = array(
array(
'field' => 'keywords',
'label' => 'keywords',
'rules' => 'regex_match[/[a-zA-Z0-9 ]+$/]'
)
);

2

Решение

В этом регулярном выражении есть три вопроса:

  • Проверочное регулярное выражение должно начинаться с совпадения в начале строки, поэтому вам нужно начать привязку строки ^ или же \A, Также целесообразно заменить $ с самого конца якоря строки \z (как $ также соответствует перед последним символом новой строки в строке).
  • Рево прав, \uXXXX нотация не поддерживается движком PHP regex. Однако вам не нужно указывать диапазон кодовых точек Unicode здесь. Китайские иероглифы в PHP PCRE регулярное выражение может быть определено с помощью свойства Unicode \p{Han}.
  • Чтобы регулярное выражение PCRE стало известно о Unicode, вам необходимо использовать /u модификатор.

Итак, используйте

/\A[a-zA-Z0-9\s\p{Han}]+\z/u

Или (чуть менее безопасно),

/^[a-zA-Z0-9\s\p{Han}]+$/u
1

Другие решения

PCRE не поддерживает \uFFFF синтаксис. использование \x{FFFF} вместо.

/[a-zA-Z0-9 \x{4e00}-\x{9fa5}]+$/
0

По вопросам рекламы [email protected]