使用PHP来检验Email地址是否真实有效的邮址
这几天一直在想一个项目,在想这个项目执行里将会遇到的几个关键点。当然这些还停留在IDEA上,其它一个关键点就正好需要用到检验邮箱是否真实有效。这几天也找了些资料,除了找到一个WEBXML的收费接口外,还真的很少介绍如何检验邮箱有效性。
网上的通常做法有两种方式(或结合起来):
第一是检验邮箱格式是否正确;
第二是向邮箱发送一封邮件,邮箱用户通用一个链接地址来进行确认。
但这些方式并不适合于我的想法。刚找到一篇文章,正是我想的方法。OH~YEAR~~
方法如下:
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://rocing.cn/show-387-1.html
原始方法出自:http://www.linuxjournal.com/article/9585
- 相关文章
- 在ecshop的商品详情页调用商品所属品牌的描述ecshop中批量替换货号前缀PHP 性能优化技巧php中用substr截取时中文乱码的解决办法PHP服务器变量$_SERVER详解PHP中的正则表达式完整的editplus之php语法文件用php实现远程网络文件下载到服务器使用PHP通过GOOGLE翻译接口自动翻译文件PHP中rawurlencode将字符串编码成URL专用格式时与页面编码的关系全新学习PHP[第一天]PHP技巧:php过滤危险html代码php中计算时间差的几种方法PHP读取目录下所有文件的代码一个图形显示IP的PHP程序代码php下过滤HTML代码的函数ASP与PHP读取多张表(多张表的操作)越来越喜欢玩PHP了最近喜欢上PHP了[转载]关于ajax与php结合中文处理问题
当前共有2条评论,我也要发表: