Ошибка электронной почты php filter_var

Я использую функцию filter_var php для проверки адреса электронной почты, когда пользователь регистрируется на моем сайте

поэтому я использую этот код в виде сообщения:

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

а затем я делаю:

if(!$email) {
  // return to the form 
}
else {
  // send registration info
}

теперь, когда я var_dump ($ email)

выход:

string(23) "user."name"@example.com"

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

Ответ 1

Это действительный адрес электронной почты:

Кавычка может существовать как объект, разделенный точкой, в пределах локальная часть или она может существовать, когда внешние цитаты являются внешними символы локальной части (например, abc. "defghi".xyz @example.com или Разрешены "abcdefghixyz" @example.com ". abc "defghi" [email protected] является не; не имеет значения abc\def "[email protected]).

Ответ 2

У меня была та же проблема (см. Dalmas о том, почему она действительна), и вот как я ее исправил:

filter_var($email, FILTER_SANITIZE_EMAIL);

например:

$email = 'user."name"@example.com';
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

выведет:

string(21) "[email protected]"

Затем вы можете проверить электронную почту, используя свою проверку.

вы можете получить дополнительную информацию о php site