Задать вопрос
@hooligan377

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

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

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

elseif (!preg_match('|^[a-zA-Zа-яА-Я0-9]+$|i', $login)) msg('Логин должен состоять из букв и цифр');
  • Вопрос задан
  • 172 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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('Логин должен состоять только из русского или английского алфавита');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы