#php #regex #cakephp #diacritics
#php #регулярное выражение #cakephp #диакритические знаки
Вопрос:
Я пытаюсь проверить некоторые пользовательские вводимые данные, но мое регулярное выражение завершается ошибкой при обнаружении диакритических знаков. Я говорю о символах типа ăĂ
и так далее.
Что я должен добавить в код регулярных выражений, чтобы он также проверял диакритические знаки из входных данных?
Спасибо!
P.S.: Если это имеет значение, я использую PHP с фреймворком CakePHP.
Это фрагмент кода, который я в настоящее время использую для проверки пользовательского ввода: return preg_match('|^[0-9a-zA-Z_-s]*$|', $value);
Комментарии:
1. Как мы можем вам помочь, если вы не говорите нам, какое у вас регулярное выражение?
2. Извините, забыл добавить это!
Ответ №1:
Предполагая, что вы хотите сопоставить буквы, тогда разрешение букв в Юникоде должно помочь:
Используйте /p{L} /u
, например, если вы хотите сопоставить последовательность букв. Не забудьте /u
модификатор (Unicode).
В вашем случае:
return preg_match('|^[0-9p{L}_s-]*$|u', $value);
должно сработать.
Кроме того, вероятно, не стоит использовать |
в качестве разделителя регулярных выражений. Для текущего регулярного выражения /
подошло бы просто отлично; другими альтернативами являются ~
or #
, поскольку они редко встречаются в тексте и не имеют никакого особого значения в регулярных выражениях.