$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(!emptyempty($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;}
复制代码