我有以下功能来验证电子邮件地址:
function validateEMAIL($EMAIL) {
$v = "/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/";
return (bool)preg_match($v, $EMAIL);
}
这可以检查电子邮件地址是否有效吗?
发布于 2012-08-19 21:33:15
您可以使用filter_var来实现这一点。
<?php
function validateEmail($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
?>
发布于 2017-02-04 15:03:37
在我的经验中,regex
解决方案有太多的假阳性,而filter_var()
解决方案有假阴性(特别是对于所有较新的TLDs)。
相反,最好确保地址包含电子邮件地址的所有必需部分(用户、"@“符号和域),然后验证域本身是否存在。
无法确定(服务器端)外部域是否存在电子邮件用户。
这是我在Utility类中创建的方法:
public static function validateEmail($email)
{
// SET INITIAL RETURN VARIABLES
$emailIsValid = FALSE;
// MAKE SURE AN EMPTY STRING WASN'T PASSED
if (!empty($email))
{
// GET EMAIL PARTS
$domain = ltrim(stristr($email, '@'), '@') . '.';
$user = stristr($email, '@', TRUE);
// VALIDATE EMAIL ADDRESS
if
(
!empty($user) &&
!empty($domain) &&
checkdnsrr($domain)
)
{$emailIsValid = TRUE;}
}
// RETURN RESULT
return $emailIsValid;
}
发布于 2012-08-19 21:32:44
我认为你最好使用PHP内置的filters --在这个特殊的例子中:
当与FILTER_VALIDATE_EMAIL
参数一起提供时,它可以返回true或false。
https://stackoverflow.com/questions/12026842
复制相似问题