Не работает регулярное выражение

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Написал простую регулярку на фильтрацию строк, содержащих русские слова.
Код:
#^[\p{Cyrillic}\s0-9\-]+$#
Потестил её на Для просмотра ссылки Войди или Зарегистрируйся - работает.
Добавил в свой код - не работает... Не могу понять почему, нашёл онлайн компилятор PHP, потестил на нём код - действительно не работает!

Код:
    $res = "вопрос";
    if(preg_match("#^[\p{Cyrillic}\s0-9\-]+$#", $res)){
      echo 'Good';
    } else {
      echo 'Bad';
    }

Выдаёт Bad, хотя в переменной $res только русские символы, должна писать Good. Почему?
Для просмотра ссылки Войди или Зарегистрируйся
 
Пробуй
PHP:
<?php
$res = "Ростов-на-Дону";
    if(preg_match('#[А-Яа-я\-]+#', $res)){
      echo 'Good';
    } else {
      echo 'Bad';
    }
?>
 
Написал простую регулярку на фильтрацию строк, содержащих русские слова.
Код:
#^[\p{Cyrillic}\s0-9\-]+$#
Потестил её на Для просмотра ссылки Войди или Зарегистрируйся - работает.
Добавил в свой код - не работает... Не могу понять почему, нашёл онлайн компилятор PHP, потестил на нём код - действительно не работает!

Код:
    $res = "вопрос";
    if(preg_match("#^[\p{Cyrillic}\s0-9\-]+$#", $res)){
      echo 'Good';
    } else {
      echo 'Bad';
    }

Выдаёт Bad, хотя в переменной $res только русские символы, должна писать Good. Почему?
Для просмотра ссылки Войди или Зарегистрируйся
Как на счет кодировки на странице, не забыл?)
 
Код:
#^[\p{Cyrillic}\s0-9\-]+$#
Если строка в кодировке UTF-8, то в шаблон нужно добавить Для просмотра ссылки Войди или Зарегистрируйся.


Пробуй
PHP:
<?php
$res = "Ростов-на-Дону";
    if(preg_match('#[А-Яа-я\-]+#', $res)){
      echo 'Good';
    } else {
      echo 'Bad';
    }
?>
Такой шаблон пропустит много лишнего.
PHP:
<?php
$res = "ΫΣΩ";
    if(preg_match('#^[А-Яа-я\-]+$#', $res)){
      echo 'Good';
    } else {
      echo 'Bad';
    }
Для просмотра ссылки Войди или Зарегистрируйся
 
А так?
PHP:
$res = "Ежик";
    if(preg_match('/^[а-яё0-9]+$/iu', $res)){
      echo 'Good';
    } else {
      echo 'Bad';
    }
 
Назад
Сверху