preg_match не работает с русскими буквами

233
26 марта 2017, 06:20

Почему данный код не выводит 1 ?

$message = "Андрей";
if(preg_match('/^[а-яА-ЯёЁa-zA-Z]+$/', $message)){
    echo "1";   
}
Answer 1

Если вам надо разбирать строку в UTF-8, необходимо использовать модификатор u

u (PCRE_UTF8) Этот модификатор включает дополнительную функциональность PCRE, которая не совместима с Perl: шаблон и целевая строка обрабатываются как UTF-8 строки. Недопустимая целевая строка приводит к тому, что функции preg_* ничего не находят, а неправильный шаблон приводит к ошибке уровня E_WARNING. Пятый и шестой октеты UTF-8 последовательности рассматриваются недопустимыми с PHP 5.3.4 (согласно PCRE 7.3 2007-08-28); ранее они считались допустимыми.

То есть в вашем случае:

preg_match('/^[а-яА-Яa-zA-ZёЁ]+$/u', $message)
Answer 2

У меня в таком варианте заработала:

$message = "Андрей";
 if(preg_match('/^[а-яА-Яa-zA-ZёЁ]+$/u', $message)){
      echo "1";   
}
READ ALSO
ReplyKeyboardHide в PHP Telegram

ReplyKeyboardHide в PHP Telegram

Нужно вообще удалить пользовательскую клавиатуру, все варианты ответов идут в keyboard, некоторые пользователи бота этого не догоняют и начинают...

389
Ошибка 500 при получении запроса

Ошибка 500 при получении запроса

В чем может быть ошибка? При сохранении/добавлении записи отправляет кросспост в вк с получением шортлинка вк:

284
Почему не работает кнопка “удалить”?

Почему не работает кнопка “удалить”?

Добрый деньвывод из массива в таблицу работает

183
Помогите с sql запросом one-to-many

Помогите с sql запросом one-to-many

Есть таблица support_tickets и таблица ticket messages

215