@aopil

Как ограничить количество символов в preg_match?

if (preg_match("/^([a-zA-Z0-9\\._-])+@([a-zA-Z0-9_-]+\.)+[a-z]{2,6}$/ix", $email)) {
     echo "Email is valid";
}


Есть вот такой preg_match для проверки email.

Правильно ли он составлен? И как добавить, условие ограничение длины $email в 50 символов.
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 3
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
У вас стоит флаг /i, поэтому указывать A-Z излишне. В части перед @ могут появляться символы = и +, а полный список вариантов ещё страшнее. В обычных доменах символ подчёркивания не используется. Домены верхнего уровня сейчас могут быть длиннее 6 символов, такова современная реальность. Длину можно проверить через strlen($email) < 51.
Ответ написан
php666
@php666
PHP-макака
Правильно ли он составлен?
нет
Отсюда: https://stackoverflow.com/questions/201323/how-can...

Этот вопрос задают часто, но я думаю, вам следует сделать шаг назад и спросить себя , почему вы хотите синтаксически проверять адреса электронной почты? Какая польза на самом деле?

Он не будет ловить распространенные опечатки.
Это не мешает людям вводить недействительные или вымышленные адреса электронной почты или вводить чужие адреса в этом отношении.

Если вы хотите проверить правильность электронного письма, у вас нет другого выбора, кроме как отправить электронное письмо с подтверждением и попросить пользователя ответить на него. Во многих случаях вам все равно придется отправить письмо с подтверждением из соображений безопасности или этических соображений (например, вы не можете зарегистрировать кого-либо в службе против его воли).
Оттуда же:
/^\S+@\S+\.\S+$/

Вот гипотетически правильный: www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

только зачем все это?
Ответ написан
@maksam07
За вас уже сделали проверку почты...
<?php
$email = "john.doe@example.com";

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  echo("$email is a valid email address");
} else {
  echo("$email is not a valid email address");
}
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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