龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 目前最符合规范的PHP版Email地址验证代码

时间:2014-07-25 02:02来源:网络整理 作者:网络 点击:
分享到:
目前最符合规范的PHP版Email地址验证代码 目前最符合RFC规范的PHP版Email地址验证代码,作者是DouglasLovell,可以同时验证地址格式和域名是否真实(验证域名功能在windows平台需要5.3版本及

目前最符合RFC规范的PHP版Email地址验证代码,作者是Douglas Lovell,可以同时验证地址格式和域名是否真实(验证域名功能在windows平台需要5.3版本及以后才能支持)

function validEmail($email) {
    $isValid = true;
    $atIndex = strrpos ( $email, "@" );
    if (is_bool ( $atIndex ) && ! $atIndex) {
        $isValid = false;
    } else {
        $domain = substr ( $email, $atIndex + 1 );
        $local = substr ( $email, 0, $atIndex );
        $localLen = strlen ( $local );
        $domainLen = strlen ( $domain );
        if ($localLen < 1 || $localLen > 64) {
            // local part length exceeded
            $isValid = false;
        } else if ($domainLen < 1 || $domainLen > 255) {
            // domain part length exceeded
            $isValid = false;
        } else if ($local [0] == '.' || $local [$localLen - 1] == '.') {
            // local part starts or ends with '.'
            $isValid = false;
        } else if (preg_match ( '/\\\\.\\\\./', $local )) {
            // local part has two consecutive dots
            $isValid = false;
        } else if (! preg_match ( '/^[A-Za-z0-9\\\\-\\\\.]+$/', $domain )) {
            // character not valid in domain part
            $isValid = false;
        } else if (preg_match ( '/\\\\.\\\\./', $domain )) {
            // domain part has two consecutive dots
            $isValid = false;
        } else if (! preg_match ( '/^(\\\\\\\\.|[A-Za-z0-9!#%&`_=\\\\/$\\'*+?^{}|~.-])+$/', str_replace ( "\\\\\\\\", "", $local ) )) {
            // character not valid in local part unless 
            // local part is quoted
            if (! preg_match ( '/^"(\\\\\\\\"|[^"])+"$/', str_replace ( "\\\\\\\\", "", $local ) )) {
                $isValid = false;
            }
        }
        //5.3.0 This function is now available on Windows platforms. 
        if ($isValid && ! (checkdnsrr ( $domain, "MX" ) || checkdnsrr ( $domain, "A" ))) {
            // domain not found in DNS
            $isValid = false;
        }
    }
    return $isValid;
}
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接