Я использую такой шаблон, чтобы найти кириллические символы в моем тексте, но он возвращает true для символов валюты юникода «₴» (украинская гривна) и «€» (евро)
$pat = '/.*[А-Яа-яёЁ].*/';
$res = preg_match($pat, $str);
В чем проблема?
Вы должны сделать свой шаблон Unicode-осведомленным с /u
модификатор:
$pat = '/.*[А-Яа-яёЁ].*/u';
$res = preg_match($pat, $str);
квотирование документ:
ты (PCRE_UTF8)
Этот модификатор включает дополнительные функции PCRE, несовместимые с Perl. Шаблонные и предметные строки рассматриваются как UTF-8.
демонстрация. Кстати, если вы только проверяете, присутствуют или нет кириллические буквы в строке, ничего не делая при совпадении (и с данным кодом, который вы делаете), вы можете удалить .*
части от вашего образца.
Других решений пока нет …