为什么PHP filter_var说这是一个有效的电子邮件地址?

时间:2011-12-18 16:22:27

标签: php email email-validation 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说它有效?

2 个答案:

答案 0 :(得分:15)

valid email address

  

引用的字符串可能作为点内分隔的实体存在   local-part或当最外面的引号是最外层时可能存在   本地部分的字符(例如abc。“defghi”.xyz @ example.com或   允许“abcdefghixyz”@ example.com。 abc“defghi”xyz@example.com是   不;既不是abc \“def \”ghi@example.com)。

答案 1 :(得分:11)

我遇到了同样的问题(请参阅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 site

的更多信息