目前最符合规范的PHP版Email地址验证代码
目前最符合RFC规范的PHP版Email地址验证代码,作者是Douglas Lovell,可以同时验证地址格式和域名是否真实(验证域名功能在windows平台需要5.3版本及以后才能支持),原始地址出自:http:
目前最符合RFC规范的PHP版Email地址验证代码,作者是Douglas Lovell,可以同时验证地址格式和域名是否真实(验证域名功能在windows平台需要5.3版本及以后才能支持),原始地址出自:http://www.linuxjournal.com/article/9585
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;
}
- 上一篇:PHP 检测手机浏览器的代码
- 下一篇:PHP:正则表达式处理微博中的话题和对象名
精彩图集
精彩文章






