«

PHP验证邮箱的正确与有效性

时间:2024-1-27 09:33     作者:韩俊     分类: PHP


直接使用php自带的过滤器方法验证。

/**
 * 验证是否是邮箱
 * @param string $email
 * @return bool
 */
function isEmail($email) {
    return filter_var($email, FILTER_VALIDATE_EMAIL);
}

下面的方法已经失效。

前不久在国外一网站上看到Verify a User’s Email Address Using 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函数:

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;
}

标签: php php教程

热门推荐