FILTER_VALIDATE_EMAIL

时间:2015-12-13 16:20:44

标签: php forms

由于某些原因,我不清楚,我无法在我的网站上使用此代码:当我使用它时,php表单无法加载。

<?php
$email = "john.doe@example.com";
$email = (filter_var($email, FILTER_SANITIZE_EMAIL));       
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    echo("$email is a valid email address");
} else {
    echo("$email is not a valid email address");
}

这个有效,但在电子邮件中.之后没有@时,它不会出错,因此下面的电子邮件会得到验证

$email = "john.doe@examplecom";
$email = (filter_var($email, FILTER_SANITIZE_EMAIL));

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo("$email is a valid email address");
} else {
    echo("$email is not a valid email address");
}
?>

如何让我的表单仅在@

之后验证包含.@的电子邮件

编辑:

        $authorEmail = (filter_var($_POST['formEmail'], FILTER_SANITIZE_EMAIL));
        if (!(filter_var($authorEmail, FILTER_VALIDATE_EMAIL))){
            $emailError = true;
            $hasError = true;
        } else{
            $formEmail = $authorEmail;
        };

1 个答案:

答案 0 :(得分:1)

您不应该尝试执行严格的验证。您的第二个示例(&#34; john.doe@examplecom" )是根据相关RFC标准(5321,5322和6531)的有效电子邮件地址。其他有效的电子邮件地址包括:

  • &#34;()&LT;&GT; []:; @ \\&#34;#$%&安培;&#39; * + - / = ^ _`{} |!? 〜.A&#34; @ example.org
  • 用户@ [IPv6的:2001:DB8 :: 1]
  • 用户@ COM

这个必须作为代码发布,因为它包含许多奇怪的字符:

#!$%&'*+-/=?^_`{}|~@example.org

examples taken from email wiki

最接近,您可以使用符合RFC的本土验证系统来使用一个非常复杂的正则表达式:like this one