如何在PHP中验证邮箱地址
如何在PHP中验证邮箱地址
我有一个用于验证邮件地址的函数:
function validateEMAIL($EMAIL) { $v = "/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/"; return (bool)preg_match($v, $EMAIL); }
这个函数能够检查邮件地址是否有效吗?
admin 更改状态以发布 2023年5月24日
验证电子邮件地址是否格式良好最简单、最安全的方法是使用filter_var()
函数:
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { // invalid emailaddress }
此外,您还可以检查域名是否定义了MX
记录:
if (!checkdnsrr($domain, 'MX')) { // domain is not valid }
但这仍然不能保证邮件是否存在。找出这个需要通过发送确认邮件来实现。
现在,您已经获得了简单的答案,如果您想了解电子邮件地址验证,请继续阅读,否则只需使用快速答案并进行下一步即可。毫不怀疑。
尝试使用正则表达式验证电子邮件地址是一项“不可能”的任务。我会说,你所编写的正则表达式是无用的。关于电子邮件地址有三个rfc,并写一个正则表达式捕捉错误的电子邮件地址,同时不会出现假阳性,这是任何凡人都无法做到的。请查看此列表以测试(成功和失败)PHP filter_var()
函数使用的正则表达式。
即使内置的PHP函数、电子邮件客户端或服务器都无法做到完美。但在大多数情况下,filter_var
是最佳选择。
如果您想知道PHP(目前)用于验证电子邮件地址的正则表达式模式,请参见PHP源代码。
如果您想了解更多关于电子邮件地址的知识,我建议您开始阅读规范,但我不得不警告您,这并不是一份易读的文档: