PHP验证邮箱的正确与有效性(示例)

发布时间:2019-11-13编辑:脚本学堂
分享一个php验证邮箱正确性及有效性的代码,老外写的,验证邮箱的功能还不错,有兴趣研究php邮箱验证的朋友,可以参考学习下。

在国外一网站上看到Verify a User’s Email Address Using PHP,即用PHP验证邮箱的正确与有效性。
代码:
 

复制代码 代码示例:
<?php
function validate_email($email){
  $exp="^[a-z'0-9]+([._-][a-z'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";
  if(eregi($exp,$email)){ //先用正则表达式验证email格式的有效性
    if(checkdnsrr(array_pop(explode("@",$email)),"MX")){//再用checkdnsrr验证email的域名部分的有效性
      return true;
    }else{
      return false;
    }
  }else{
    return false;
  }
}
 

注意:checkdnsrr函数在win主机上是无效的!

附,国外某程序员提出的一种解决办法,另外写了个函数代替checkdnsrr函数:
 

复制代码 代码示例:
<?php
function myCheckDNSRR($hostname, $recType=''){
  if(!empty($hostName)){
    if( $recType=='' ) $recType="MX";
      exec("nslookup -type=$recType $hostName", $result);
    foreach($result as $line){
      if(eregi("^$hostName",$line)){
        return true;
      }
    }
    return false;
  }
  return false;
}