如何使用php5验证输入值是否为有效的电子邮件地址。现在我正在使用这个代码
function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
return true;
}
else {
return false;
}
}
但它显示已弃用的错误。如何解决此问题。请帮帮我
8条答案
按热度按时间vfhzx4xs1#
您可以使用
filter_var()
函数,它为您提供了许多方便的验证和清理选项。如果你不想更改依赖于函数的代码,那么就这样做:
ereg
函数家族(POSIX Regex函数)应该替换为preg
家族(PCRE Regex Functions)。有少量的差异,阅读手册应该足够了。PHP 5.3.3和5.2.14有一个与FILTER_VALIDATE_EMAIL相关的bug,在验证大值时会导致segfault。简单而安全的解决方法是在
filter_var()
之前使用strlen()
。我不确定5.3.4最终版本,但据说一些5.3.4快照版本也受到了影响。这个bug已经被修复了。
bazmega@kapa
验证为有效的电子邮件地址,因为实际上它是一个有效的电子邮件地址。但在互联网上的大多数时间,您也希望电子邮件地址具有TLD:bazmega@kapa.com
.正如这个blog post中所建议的(链接由@Istiaque Ahmed发布),你可以使用一个正则表达式来扩展filter_var()
,该正则表达式将检查域部分中是否存在一个点(但不会检查 * 有效 * TLD):正如@Eliseo Ocampos指出的,这个问题只存在于PHP 5.3,in that version they changed the regex之前,现在它会做这个检查,所以你不必这样做。
pkwftd7m2#
请参阅http://www.php.net/manual/en/function.ereg.php上的注解:
从PHP 5.3.0开始,regex扩展被弃用,取而代之的是PCRE extension。调用此函数将发出E_DEPRECATED通知。有关转换为PCRE的帮助,请参阅the list of differences。
preg_match()使用与Perl兼容的正则表达式语法,通常是ereg()的更快替代方法。
qq24tv8q3#
这是一个老帖子,但我将分享一个我的解决方案,因为没有人在这里提到一个问题之前。
新的电子邮件地址可以包含UTF-8字符或特殊域名,如
.live
,.news
等。此外,我发现一些电子邮件地址可以是西里尔文,在所有情况下,标准正则表达式或
filter_var()
将失败。这就是为什么我为它制定了一个解决方案:
此功能适用于所有情况和电子邮件格式。
iqxoj9l94#
我总是用这个:
6tdlim6h5#
用户数据对于一个优秀的开发人员来说非常重要,所以不要一次又一次地要求相同的数据,使用一些逻辑来纠正数据中的一些基本错误。
之后,使用此
filter_var()
函数验证您的电子邮件地址。例如:
zpjtge226#
用途:
eoigrqb67#
请注意,地址iasd@x.z-----com是INVALID,但filter_var()返回true,许多其他字符串(电子邮件)INVALID使用filter_var()返回true。
对于验证电子邮件,我使用此函数:
请改进和分享,谢谢
hfyxw5xn8#
虽然我有点晚了,但这可以帮助那些还想检查更多的人。
这将只验证电子邮件格式是否正确。但如果你想使用更多,比如如果这个电子邮件真的存在与否,你可以使用免费的API.
这是我目前在我的网站上使用的代码。
你可以在这里找到更多的细节。https://email-validator.com/tutorial
这个API的优点是,它提供实时结果,你将获得10,000个免费积分