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

Валидация имени пользователя на специальные символы?

Вот как сейчас выглядит валидация:
$whitelist = '/^([A-Za-z_0-9]+)$/i';

if (!preg_match($whitelist, $username)) {
	return false;
}


Т.е. только латинские символы, цифры и нижнее подчеркивание допустимы для username.

Но столкнулся с тем, что пропускается такое:
Username™

Как предотвратить подобное?
  • Вопрос задан
  • 471 просмотр
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Попробуйте так:
^[A-Za-z_0-9]+$
Информация про символ
Ответ написан
@ShadowTrix Автор вопроса
В общем с такой регуляркой /^([A-Za-z_0-9]+)$/i валидация работает.
Возможно, пользователь использует какую-ту иную хитрую схему подстановки спец. символов.
Будем смотреть.

А вот с такой регуляркой уже не работает:

$whitelist = '/[\p{L}\p{M}\p{Nd}._-]+/';
if (!preg_match_all($whitelist, $username)) {
	return false;
}


Первый пример - это наш кастом.
А второй - от вендора.
Ответ написан
Комментировать
@BorisKorobkov Куратор тега PHP
Web developer
Но столкнулся с тем, что пропускается такое:
Username™

Нет, не пропускает.
https://onlinephp.io/c/75a3f

P.S. Если "i", то "A-Z" лишнее. И круглые скобки в данном случае - тоже.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽