在开发 web系统时,经常在注册或者登陆或者邮箱保护的时候会需要验证邮箱,现在我来分享邮箱验证的一些小tips。(多说一句,现在基本用手机号注册登录是趋势了,匹配手机号我后面再讲了)。
1.最开始也是最简单的,就是验证下邮箱的组成 ,思路: 3~50 (字母数字_) + @ + 邮箱域名。
以下为测试示例:
$Email = '[email protected]';
$reg = '#^\w{3,50}@\w{1,64}\.\w{2,5}$#'; if(preg_match($reg,$Email)){
echo '验证通过';
}else{
echo '错误的邮箱格式';
}
这是最简单的邮箱验证了,主要是验证了 邮箱的格式是否正确了
2. 后来 翻看php.net里面关于PHP自带的验证函数 filter_var()(准确来说,叫做 过滤器),更好用!!! 详细链接在此:http://php.net/manual/zh/function.filter-var.php。
对于验证邮箱来说,这一句就够了,filter_var($email,FILTER_VALIDATE_EMAIL)
$email = '[email protected]';
if(filter_var($email,FILTER_VALIDATE_EMAIL)){
echo '验证通过';
}else{
echo '错误的邮箱格式';
}
以上基本能够验证基本的邮箱格式,但是并不知道邮箱的服务器是否可用,这时候就用checkdnsrr() 来检查 主机的DNS记录,以此判断邮箱是否存在,
$Email = '[email protected]';
$host = substr($Email,strpos($Email,'@')+1);
var_dump(checkdnsrr($host));
3. 最后 如果碰到二级域名的邮箱,可以用 以下的 正则表达式来 判断,主要思路就是 多检查二次域名,如下:
$email = '[email protected]';
$reg = '#([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?#i';
if(preg_match($reg,$email)){
echo '验证通过';
}else{
echo '错误的邮箱格式';
}
以上为验证邮箱的简单记录,希望对各位有用~~~