php电子邮件验证无法识别.com.com

时间:2018-01-29 12:54:57

标签: php email email-validation

以下是该问题的测试代码

如果发出包含.com.com扩展名的无效电子邮件,则视为有效

请帮助解决相同的问题

提前致谢

<?php 
if(isset($_POST['submit']))
{
function validate_email($email)
  {
    $exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";
      if(eregi($exp,$email))
      {
       if(checkdnsrr(array_pop(explode("@",$email)),"MX"))
        {
          return 1;
        }
        else
        {
          return 0;
        }
    }
  else
  {
    return 0;
  }    
}

    $email = $_POST['email'];   
    print $details= validate_email($email);
}

?>
<form action="" method="post">
 <h1> Email </h1>
 <input type="email" name="email">
 <button type="submit" name="submit"> SUBMIT </button> 
</form>

3 个答案:

答案 0 :(得分:1)

如何知道该电子邮件地址有误?

有效的电子邮件地址已经是#34;某人@ company&#34;

凡&#34;公司&#34;可能是您的Intranet系统主机名。出于这样的原因,FILTER_VALIDATE_EMAIL不会检查&#34;有效&#34; TLD,因为它无法知道它是否有效。

至于建议不要自己编写更具体的检查,因为在很多情况下这些检查会使您的应用程序无效。

答案 1 :(得分:0)

您可以使用

$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i";

或只是

filter_var('email@email',FILTER_VALIDATE_EMAIL)

答案 2 :(得分:-1)

您可以使用此正则表达式:

^([a-z\'0-9\._-]+)@([a-z0-9]+)((\.[a-z0-9]{2,3})(\.[a-z0-9]{2})|(\.[a-z0-9]{2,3}))$

与&#34; john.doe@gmail.com"合作;或者&#34; john.doe@domain.co.uk"但是现在有太多不同的tld可用,很难匹配所有可能性。

您应该尝试使用电子邮件验证服务的API。

此致