2011-12-18 5 views
10

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

так я использую этот код образуют пост:

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

потом я сделать:

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

теперь, когда я var_dump ($ электронная почта)

выход:

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

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

ответ

15

Это являетсяvalid email address:

Строка в кавычках может существовать как точка отделенной объекта в локальной части или она может существовать, когда внешние кавычки крайних символов по информации локального часть (например, abc. «defghi» .xyz @ example.com или «abcdefghixyz"@example.com разрешены. abc« defghi »[email protected] is нет, ни один из примеров abc \ def/ghi @ .com).

+5

спасибо за информацию, я думаю, что это смешно, что они позволяют такие символы – fred

+0

@fred Не каждый говорит и пишет по-английски. Двойные кавычки часто используются для символов с других языков. Не так смешно сейчас, а? – Walf

11

У меня была такая же проблема (см 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

+1

спасибо за этот ответ, мне было интересно, как я могу это исправить. моя проблема заключается в том, чтобы понять, почему они позволяют это, что я думаю, что это смешно, спасибо за решение – fred

+0

, что вы приветствуете, я думаю, что это тоже, но так оно и есть! –

Смежные вопросы