@hooligan377

Почему не работает preg_match?

Есть условие при регистрации, логин должен состоять только из анг., рус. букв алфавита и цифр, но он не работает, когда я ввожу логин на русском, в чем проблема?

$login = trim(filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING));

elseif (!preg_match('|^[a-zA-Zа-яА-Я0-9]+$|i', $login)) msg('Логин должен состоять из букв и цифр');
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Регулярные выражения
Забыли букву ё, забыли выставить флаг u. Пусть будет preg_match('~^[a-zа-яё\d]+$~iu', $login).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@hooligan377 Автор вопроса
Сделал чуть проще, нашел ошибку. Может пригодится кому:

elseif(preg_match("#[a-z]+#ui", $login) && preg_match("#[а-я]+#ui", $login)) msg('Логин должен состоять только из русского или английского алфавита');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 10:21
1200 руб./в час
26 апр. 2024, в 10:10
1000 руб./за проект