为什么PHP filter_var说这是一个有效的电子邮件地址?
当用户注册到我的站点时,我使用为什么PHP filter_var说这是一个有效的电子邮件地址?,php,email,email-validation,filter-var,Php,Email,Email Validation,Filter Var,当用户注册到我的站点时,我使用filter\u varPHP函数验证电子邮件地址 我在帖子中使用了以下代码: $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); 然后我会: if(!$email) { // return to the form } else { // send registration info } 现在,当我var\u dump($email)时,我得到了输出: string(23) "use
filter\u var
PHP函数验证电子邮件地址
我在帖子中使用了以下代码:
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
然后我会:
if(!$email) {
// return to the form
}
else {
// send registration info
}
现在,当我var\u 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);
例如:
将输出:
string(21) "user.name@example.com"
然后,您可以使用验证来验证电子邮件
你可以在上获得更多信息谢谢你提供的信息,我认为他们允许这样做是荒谬的chars@fred不是每个人都会说和写英语。双引号通常用于其他语言的字符。现在没那么可笑了吧?谢谢你的回答,我在想我该怎么解决它。我的问题是要理解他们为什么允许这样做,我认为这很荒谬,谢谢你的解决方案
string(21) "user.name@example.com"