10

当用户注册我的网站时,我使用filter_varPHP 函数来验证电子邮件地址。

我使用帖子中的这段代码:

$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"

我想知道为什么这不会返回假。我认为双引号是不可接受的,那么为什么 PHP 说它是有效的呢?

4

2 回答 2

15

一个有效的电子邮件地址

带引号的字符串可以在本地部分中以点分隔实体的形式存在,也可以在最外层引号是本地部分的最外层字符时存在(例如 abc."defghi".xyz@example.com 或 "abcdefghixyz"@允许 example.com。abc"defghi"xyz@example.com 不允许;abc\"def\"ghi@example.com 也不允许)。

于 2011-12-18T16:33:49.497 回答
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 网站上获得更多信息

于 2011-12-18T16:35:53.347 回答