【发布时间】:2011-03-23 03:53:17
【问题描述】:
哪个解决方案更好,使用内置验证filter_var('email', FILTER_VALIDATE_EMAIL) 还是自定义函数?
谢谢!
【问题讨论】:
-
这取决于你的自定义函数;)
标签: php validation email
哪个解决方案更好,使用内置验证filter_var('email', FILTER_VALIDATE_EMAIL) 还是自定义函数?
谢谢!
【问题讨论】:
标签: php validation email
Filter var for email 删除所有字符,letters、digits 和 !#$%&'*+-/=?^_`{|}~@.[] 除外。现在取决于您是要使用此过滤还是创建自定义解决方案。
这里有一篇很棒的文章:
Input Validation: Using filter_var() Over Regular Expressions
【讨论】:
自定义验证让您可以更好地控制自己想要走多远。作为电子邮件地址,什么是有效的和无效的比您想象的要复杂得多,而且在大多数情况下,对此过于松懈总比过于严格要好。毕竟,语法上有效的电子邮件地址并不能保证该帐户确实存在,更不用说它正在被积极使用。类似的,它必须包含一个@,在@ 之后至少一个点,在@ 之前至少一个字符,并且没有非法字符,在大多数情况下可能就足够了。
【讨论】:
FILTER_VALIDATE_EMAIL 在大多数情况下可能已经足够好,但我还是建议不要使用它,要么使用符合 RFC 的检查器,要么如您所说,放轻松。
php_filter_validate_email 中查找正则表达式。完全符合 RFC 的时间太短了。 :)
PHP 的 filter_var 可能对大多数应用程序都满意,但如果您想比较性能和有效性,请查看此站点 http://www.linuxjournal.com/article/9585 以了解 RFC 2822 合规性的含义。
【讨论】:
我在谷歌搜索时发现了这个, 希望这能更好地解释你
【讨论】:
欢迎您使用我的免费 PHP 函数 is_email() 来验证地址。它可用here。
它将确保地址完全符合 RFC 5321。它还可以选择检查域是否实际存在。
您不应依赖验证器来告诉您用户的电子邮件地址是否真实存在:一些 ISP 会向其用户提供不合规的地址,尤其是在不使用拉丁字母的国家/地区。更多关于电子邮件验证的文章在这里:http://isemail.info/about。
【讨论】: