PHP的过滤器
阅读各种帖子后,我决定不使用REGEX来检查电子邮件是否有效,并简单地使用PHP的内置filter_var函数。 它似乎工作正常,直到它开始告诉我一封电子邮件是无效的,因为我有一个数字。
即name@domain.com工作,而name2@domain.com不工作。
我错过了什么,或者是filter_var($email, FILTER_VALIDATE_EMAIL)
真的很无效吗?
PHP 5.3.3过滤器代码中使用的正则表达式基于Michael Rushton关于电子邮件地址验证的博客。 它似乎适用于你提到的情况。
您还可以查看比较电子邮件地址验证正则表达式中的一些选项(PHP中当前使用的正则表达式是其中一种测试)。
然后,您可以选择一个更好的正则表达式,并在调用preg_match()
使用它。
否则,您可以采用正则表达式并替换文件PHP / ext / filter / logical_filter.c,函数php_filter_validate_email()
,然后重新php_filter_validate_email()
PHP。
name2@domain.com似乎工作正常:http://codepad.org/5HDgMW5i
但我肯定已经看到人们抱怨它有问题,即使在SO上。 很可能,它确实有问题,但正则表达式解决方案也是如此。 电子邮件地址规范非常非常复杂(RFC XXXX)。
这就是为什么验证您应该依赖的电子邮件的唯一解决方案是发送电子邮件到地址和需求操作(例如:如果是注册脚本,请求他们点击验证链接)。
该过滤器最近进行了改造。 http://codepad.org/Lz5m2S2N - 显示在键盘使用的版本中,您的情况已被正确过滤
你也可以看看http://bugs.php.net/49576和http://svn.php.net/viewvc/php/php-src/trunk/ext/filter/logical_filters.c。 正则表达式非常可怕。
链接地址: http://www.djcxy.com/p/2703.html上一篇: Does PHP's filter