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

本文固定链接: https://www.cxy163.net/archives/3104 | 绝缘体

该日志由 绝缘体.. 于 2022年12月03日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: PHP验证邮箱的正确与有效性 | 绝缘体
关键字: , , , ,

PHP验证邮箱的正确与有效性:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter