Ошибка электронной почты 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