Не работает регулярное выражение на поиск кириллицы
Написал простую регулярку на фильтрацию строк, содержащих русские слова.
#^[\p{Cyrillic}\s0-9\-]+$#
Потестил её на https://regex101.com/ - работает.
Добавил в свой код - не работает... Не могу понять почему, нашёл онлайн компилятор PHP, потестил на нём код - действительно не работает!
$res = "вопрос";
if(preg_match("#^[\p{Cyrillic}\s0-9\-]+$#", $res)){
echo 'Good';
} else {
echo 'Bad';
}
Выдаёт Bad, хотя в переменной $res только русские символы, должна писать Good. Почему? http://sandbox.onlinephpfunctions.com/code/07479a932b8b77d28cb07bc36a9ad906ff1da22e
Ответы (2 шт):
Я так понял, что нужна регулярка для поиска русских слов в тексте. Как вариант можно так:
$res = "вопрос";
var_dump( preg_match("/([а-я]+)/ui", $res) );
модификатор «u» позволяет работать с текстом в кодировке UTF-8, а «i» -отвечает за регистронезависимый поиск.
Ну и для поиска всех русских слов, используем preg_match_all()
Добавь модификатор #^[\p{Cyrillic}\s0-9\-]+$#u
$res = "вопрос";
if(preg_match("#^[\p{Cyrillic}\s0-9\-]+$#u", $res)){
echo 'Good';
} else {
echo 'Bad';
}