php 验证邮箱的方法

     在开发 web系统时,经常在注册或者登陆或者邮箱保护的时候会需要验证邮箱,现在我来分享邮箱验证的一些小tips。(多说一句,现在基本用手机号注册登录是趋势了,匹配手机号我后面再讲了)。

  1.最开始也是最简单的,就是验证下邮箱的组成 ,思路: 3~50 (字母数字_)   + @ + 邮箱域名。

    以下为测试示例:     

$Email = '572752023@qq.com';
$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 =  '572752023@qq.com';
if(filter_var($email,FILTER_VALIDATE_EMAIL)){
    echo '验证通过';
}else{
    echo '错误的邮箱格式';
}

  以上基本能够验证基本的邮箱格式,但是并不知道邮箱的服务器是否可用,这时候就用checkdnsrr() 来检查 主机的DNS记录,以此判断邮箱是否存在, 

$Email = '572752023@qq.com';
$host = substr($Email,strpos($Email,'@')+1);
var_dump(checkdnsrr($host));

  3. 最后 如果碰到二级域名的邮箱,可以用 以下的 正则表达式来 判断,主要思路就是 多检查二次域名,如下:

  

$email =  '572752023@qq.com.cn';
$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 '错误的邮箱格式';
}

  以上为验证邮箱的简单记录,希望对各位有用~~~

     本文永久地址: http://www.cnblogs.com/guixiaoming/p/6429976.html

原文地址:https://www.cnblogs.com/guixiaoming/p/6429976.html