PHP检验邮箱有效性的方法其实可以很简单,用到内部函数就行,连正则都可以不用写。

首先是filter_var函数

filter_var是PHP内置的一个变量过滤的方法, 提供了很多实用的过滤器, 可以用来校验整数、浮点数、邮箱、URL、MAC地址等。

filter_var如果返回false, 说明变量无法通过过滤器, 也就是不合法了。

$email = "bnxb.com@163.com";

var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));

$email = "asb";

var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));

$email = "1@a.com";

var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));

输出:

string(21) "bnxb.com@163.com"

bool(false)

string(7) 1@a.com

对于asb这种非法邮箱格式返回了false, 但对于1@a.com这种我们明显可以看出是有问题的邮箱却通过了,还是存在小问题。

不过即使你是写正则判断,正则也是会认为1@a.com是一个合法的邮箱,那还有什么办法解决这个小问题呢?

那就用checkdnsrr函数

checkdnsrr其实是用来查询指定的主机的DNS记录的,我们可以借用它来验证邮箱是否存在。

对于1@a.com肯定是MX记录不存在的。

$email = "bnxb.com@163.com";

var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));

$email = "1@a.com";

var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));

输出:

bool(true)

bool(false)

可以看到, 很完美,但缺点就是太慢了,毕竟是要请求一次DNS记录。 所以不适合对大量的邮箱采用这种做法去校验。

filter_var+checkdnsrr结合方案

我们可以结合filter_var 和checkdnsrr做校验, 对于绝大多数的非法邮箱在filter_var的时候就被排除了, 剩下的再用checkdnsrr进一步判断。

$email_arr = array("bnxb.com@163.com", "1@a.com");

foreach($email_arr as $email) {

if (filter_var($email) === false) {

echo "invalid email: $email \n";

continue;

}

if(checkdnsrr(array_pop(explode("@",$email)),"MX") === false) {

echo "invalid email: $email \n";

continue;

}

}

输出:

invalid email: 1@a.com

但要注意的是, 由于只是检查MX记录, 所以只能判断@163.com确实是有提供邮箱, 但不能说明bnxb.com这个用户是存在的。

想要更精确的判断邮箱存在, 那只能连接到smtp服务器去验证了。

下面附上函数说明:

filter_var函数

语法filter_var(variable, filter, options)variable 必需。规定要过滤的变量。filter 可选。规定要使用的过滤器的 ID。options 规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。

PHP Filters

Example #1 A filter_var() example

var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));

var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));

?>

以上例程会输出:

string(15) "bob@example.com"

bool(false)

php邮箱有效性验证,PHP验证邮箱有效性验证邮箱后缀域名是否真实存在的方法(过滤+DNS验证)...相关推荐

  1. sql判断邮箱是否合法_如何验证会员系统中用户的邮箱是否真实存在

    在开发网站时,我们需要对用户注册的邮箱进行核对与验证,用户填写的邮箱是否有效邮箱. 好吧,我们先从数据库入手,修改用户表让用户有填写email的字段,添加了2个字段: ALTER TABLE [dbo ...

  2. 亿愿批量验证检测网址链接有效性

    亿愿批量验证检测网址链接有效性(yyUrlValidate)-简介 ---最为专业的网址有效性验证工具!具备多线程和代理ip可限次数使用! ---三种技术验证网址有效性,多种有效性定义可以选用! -- ...

  3. python使用正则表达式验证用户输入密码的有效性

    python使用正则表达式验证用户输入密码的有效性 条件: 1,最少有8位 2,字母范围a到z 3,至少有一个字母时大写的 4,至少有一个数字 5,至少有一个特殊字符(_.@.$) #密码验证的条件 ...

  4. c#基类 常用数据验证的封装,数字,字符,邮箱的验证

    摘自:http://www.oschina.net/code/snippet_1242747_23573 #region 常用数据验证的封装,数字字符的验证/// <summary>/// ...

  5. gmail注册手机号不能用于验证_一个手机号码、辅助邮箱,可以注册绑定多少个gmail帐号?...

    点击上方云中栖居关注 ▲ 先说答案,据Google专家回复, 一个手机号码最多绑定10个Google帐号. 之前每当有喜欢的邮箱名称,就会注册一个谷歌邮箱帐号,应该有二十多个了吧,丢弃了一些,目前仅在 ...

  6. Python验证信用卡号的有效性(算法)(称为Luhn检测或者mod 10 检测)

    转载自: https://baijiahao.baidu.com/s?id=1662553267127372613&wfr=spider&for=pc 有修改 一个信用卡号必须是13到 ...

  7. HTML表单验证(含用户名,密码,邮箱,手机号,验证码-验证)

    HTML表单验证(含用户名,密码,邮箱,手机号,验证码) 前几天对表单注册有点感兴趣,于是在课余时间了解了一些注册表单的验证方法,自己也试着做了一个表单的验证(前端验证),很low,各位童鞋应该都看得 ...

  8. python 代理ip验证_python爬虫成长之路(二):抓取代理IP并多线程验证

    上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...

  9. mac怎么查看gitlab的注册邮箱_163电子邮箱怎么注册申请?手机号注册电子邮箱的小技巧...

    电子邮箱帮助我们实现了无纸化,无需手写信件,通过电脑.手机输入,即可与收件人在网络上进行联系.电子邮箱的兴起,对于人与人之间的沟通和交流,增加了便捷性,促进了社会的发展与进步.目前的邮箱中,TOM的1 ...

最新文章

  1. 0525 项目回顾7.0
  2. xshell启动报nssock2_nssock2.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  3. 网络营销再掀波澜,微博独领风骚
  4. 删除目录下大量小文件和清空大文件
  5. postDelayed总结
  6. Uva536 Tree Recovery二叉树重建(先序和中序确定二叉树,后序输出)
  7. [LCP28] 采购方案
  8. html cursor居中,CSS cursor属性
  9. 基于Raspbian(树莓派)搭建web安全练习环境(一)
  10. 安卓版本客户端2.1
  11. 人工神经网络分为哪两类,人工神经网络包括哪些
  12. mysql复制表结构创建新表
  13. 由三点画圆到未来日记:失控中的位置隐私
  14. Qt+OpenCV在arm板上运行实现思路
  15. 影片下载观看秘籍大全
  16. excel公式编辑器_EXCEL从文件夹中提取符合条件的记录,其实很简单
  17. L18-python语法基础-数据类型的基本操作(d5)
  18. 《都挺好》一部黑码农的神剧!
  19. 基于微信小程序的货物管理系统的设计与实现-计算机毕业设计源码+LW文档
  20. 一些电子资源的分享(1)

热门文章

  1. html5退出应用,鬼泣5致命的应用程序退出怎么办 一招帮你解决
  2. 《TCP/IP网络编程》课后练习答案第一部分1~5章 尹圣雨
  3. 给广大单身程序员介绍个开源的 “情侣网站”,女神感动到哭,追女神利器,脱单好帮手
  4. 期货期权小知识(期权期货的区别通俗易懂)
  5. 《延禧攻略》演员大起底——利用Python+bs+pyecharts分析绘制词云和玫瑰图
  6. 解剖档案管理系统平台的管理模块介绍
  7. fastboot刷机以及命令详细解说
  8. 解决Android Studio运行模拟器报:The emulator process for AVD Pixel_4a_Edited_API_28 has terminated.
  9. python获取藏头诗内容_用Python作诗,生活仍有诗和远方
  10. redis(二)基本数据类型