я использую функцию 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 говорит, что это действительно?
Это действительный адрес электронной почты :
Строка с кавычками может существовать как объект, разделенный точками в локальной части, или может существовать, когда внешние цитаты являются внешними символами локальной части (например, abc. «Defghi» .xyz @ example.com или «abcdefghixyz» @ example.com разрешены. abc "defghi" xyz@example.com не является, а также abc \ "def \" ghi@example.com).
У меня была та же проблема (см. Dalmas о том, почему она действительна), и вот как я ее исправил:
filter_var($email, FILTER_SANITIZE_EMAIL);
например:
$email = 'user."name"@example.com'; $email = filter_var($email, FILTER_SANITIZE_EMAIL);
выведет:
string(21) "user.name@example.com"
Затем вы можете проверить электронную почту, используя свою проверку.
вы можете получить дополнительную информацию на сайте php