我有这个功能来验证电子邮件地址:
function validateEMAIL($EMAIL) {
$v = "/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/";
return (bool)preg_match($v, $EMAIL);
}
这样可以检查电子邮件地址是否有效吗?
最佳答案
检查电子邮件地址是否格式正确的最简单和最安全的方法是使用 filter_var()
功能:
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// invalid emailaddress
}
此外,您还可以检查域是否定义了 MX
记录:
if (!checkdnsrr($domain, 'MX')) {
// domain is not valid
}
但这仍然不能保证邮件存在。找出答案的唯一方法是发送确认邮件。
现在您已经有了简单的答案,如果您想学习,请随时阅读有关电子邮件地址验证的内容,否则只需使用快速答案并继续前进。没有难过的感觉。
尝试使用正则表达式验证电子邮件地址是一项“不可能”的任务。我什至会说您制作的正则表达式毫无用处。有三个关于电子邮件地址的 rfc,编写一个正则表达式来捕获错误的电子邮件地址,同时没有误报,这是凡人无法做到的。查看this list用于 PHP 的 filter_var()
函数使用的正则表达式的测试(失败和成功)。
即使是内置的 PHP 函数、电子邮件客户端或服务器也无法正常工作。在大多数情况下,filter_var
仍然是最佳选择。
如果您想知道 PHP(当前)使用哪种正则表达式模式来验证电子邮件地址,请参阅 the PHP source .
如果您想了解有关电子邮件地址的更多信息,我建议您开始阅读规范,但我必须警告您,无论如何阅读都不是一件容易的事:
关于php - 如何在 PHP 中验证电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35833998/