您可以使用该
filter_var()功能,该功能为您提供了许多方便的验证和消毒选项。
filter_var($email, FILTER_VALIDATE_EMAIL)
PHP手册filter_var()
在 PHP > = 5.2.0中*可用 *
如果您不想更改依赖于函数的代码,请执行以下操作:
function isValidEmail($email){ return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;}注意 :对于其他用途(需要Regex的地方),不赞成使用的
ereg函数族(POSIX Regex
Functions)应替换为该
preg族(PCRE Regex
Functions)。差异很小,阅读本手册就足够了。
更新1 指出:
PHP
5.3.3和5.2.14有一个与FILTER_VALIDATE_EMAIL相关的错误,当验证大值时会导致segfault。在此strlen()
之前,使用简单安全的解决方法filter_var()。我不确定5.3.4最终版,但据信某些5.3.4快照版本也受到了影响。
该错误已得到修复。
更新2
:此方法当然会验证
bazmega@kapa为有效的电子邮件地址,因为实际上它是有效的电子邮件地址。但是大多数时候,在Internet上,您还希望电子邮件地址具有TLD
bazmega@kapa.com。
in-php/5855853#comment18460128_5855853)发布的链接)所建议的那样,您可以
filter_var()使用正则表达式进行扩充,该正则表达式将检查域部分中是否存在点(尽管不会检查_有效的_ TLD):
function isValidEmail($email) { return filter_var($email, FILTER_VALIDATE_EMAIL) && preg_match('/@.+./', $email);}


