PHP自带验证邮箱是否存在的方法
PHP中检查邮件地址的方法有很多,其中最常见的就是自己写规律性,但是规律性比较麻烦,所以我的PHP有自己的检查方法。
过滤器_var
Filter_var是PHP中内置的变量过滤方法,提供了很多实用的过滤器,可以用来检查整数、浮点数、邮箱、URL、MAC地址等。
如果filter_var返回false,则意味着变量无法通过过滤器,这是非法的。
$ email='[email protected]';var_dump(filter_var($email,FILTER _ VALIDATE _ EMAIL));$ email=' asbvar_dump(filter_var($email,FILTER _ VALIDATE _ EMAIL));$ email='[email protected]';var_dump(filter_var($email,FILTER _ VALIDATE _ EMAIL));输出:
String(21)'[emailprotected]' bool(false)String(7)[email protected]为asb返回false,这是一种非法的邮箱格式,但传递给了[email protected],这仍然略有缺陷。
但是,如果通过了一般规则,就会认为【emailprotected】是合法邮箱,那么有没有办法更准确的验证呢?
checkdnsrr
Checkdnsrr实际上是用来查询指定主机的DNS记录,我们可以用它来验证邮箱是否存在。
对于[emailprotected],必须是MX记录不存在。
$ email='[email protected]';var _ dump(checkdnsrr(array _ pop(explode(' @ ',$email)),' MX '));$ email='[email protected]';var _ dump(checkdnsrr(array _ pop(explode(' @ ',$email)),' MX '));输出:
Bool(真)bool(假)如你所见,它是完美的,但唯一的缺点是它太慢了。毕竟,有必要提出网络请求。所以不适合同步,大量邮箱都是用这种方法验证的。
filter_var checkdnsrr
我们可以结合filter_var和checkdnsrr进行验证。对于绝大多数非法邮箱,它们将在filter_var处挂起,其余的将被重用。
Checkdnsrr进一步判断。
$ email _ arr=array('[email protected]','[email protected]');foreach($ email _ arr as $ email){ if(filter _ var($ email)==false){ echo '无效email : $ email \ n ';继续;} if(checkdnsrr(array _ pop(explode(' @ ',$email)),' MX '===false){ echo '无效email : $ email \ n ';继续;}}输出:
无效email: [email protected]但需要注意的是,由于只检查MX记录,只能判断163.com存在,不能说用户Last Chili Church存在。
如果想更准确地判断邮箱的存在,只能连接到smtp服务器进行验证。
介绍了邮箱验证,PHP自己的方法如何验证邮箱、URL和IP是否合法,下面就为大家介绍一下:
或者主要使用filter_var函数。
语法filter _ var(变量、筛选器、选项)变量是必需的。指定要筛选的变量。可选过滤器。指定要使用的筛选器的标识。选项指定包含标志/选项的数组。检查每个过滤器的可能标志和选项。
PHP过滤器
示例#1过滤器_变量()示例
?phpvar _ dump(FIlter _ var('[EMAIL protected]',FIlter _ VALIDATE _ EMail));var _ dump(FIlter _ var(' http://example.com ',FILTER_VALIDATE_URL,FIlter _ FLAG _ PATH _ REQUIRED));上述例程将输出:
string(15)'[email protected]' bool(false)以上就是本文的全部内容,希望对大家验证自己的php邮箱有所帮助。
版权声明:PHP自带验证邮箱是否存在的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。