preg_match не работает должным образом

Я использую такой шаблон, чтобы найти кириллические символы в моем тексте, но он возвращает true для символов валюты юникода «₴» (украинская гривна) и «€» (евро)

$pat = '/.*[А-Яа-яёЁ].*/';
$res = preg_match($pat, $str);

В чем проблема?

0

Решение

Вы должны сделать свой шаблон Unicode-осведомленным с /u модификатор:

$pat = '/.*[А-Яа-яёЁ].*/u';
$res = preg_match($pat, $str);

квотирование документ:

ты (PCRE_UTF8)

Этот модификатор включает дополнительные функции PCRE, несовместимые с Perl. Шаблонные и предметные строки рассматриваются как UTF-8.

демонстрация. Кстати, если вы только проверяете, присутствуют или нет кириллические буквы в строке, ничего не делая при совпадении (и с данным кодом, который вы делаете), вы можете удалить .* части от вашего образца.

2

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

Других решений пока нет …