【问题标题】:filter_var or custom function for email validation in phpphp 中用于电子邮件验证的 filter_var 或自定义函数
【发布时间】:2011-03-23 03:53:17
【问题描述】:

哪个解决方案更好,使用内置验证filter_var('email', FILTER_VALIDATE_EMAIL) 还是自定义函数?

谢谢!

【问题讨论】:

标签: php validation email


【解决方案1】:

Filter var for email 删除所有字符,lettersdigits!#$%&'*+-/=?^_`{|}~@.[] 除外。现在取决于您是要使用此过滤还是创建自定义解决方案。

这里有一篇很棒的文章:

Input Validation: Using filter_var() Over Regular Expressions

【讨论】:

  • santizing 过滤器有作用,但 validating 过滤器没有。未经清理,“有效”电子邮件(根据过滤器)仍然可以包含上面列出的字符以外的字符。
【解决方案2】:

自定义验证让您可以更好地控制自己想要走多远。作为电子邮件地址,什么是有效的和无效的比您想象的要复杂得多,而且在大多数情况下,对此过于松懈总比过于严格要好。毕竟,语法上有效的电子邮件地址并不能保证该帐户确实存在,更不用说它正在被积极使用。类似的,它必须包含一个@,在@ 之后至少一个点,在@ 之前至少一个字符,并且没有非法字符,在大多数情况下可能就足够了。

【讨论】:

  • PHP 不根据官方 RFC 验证电子邮件地址(我现在找不到这方面的参考资料,但它最近出现在这里)。尽管FILTER_VALIDATE_EMAIL 在大多数情况下可能已经足够好,但我还是建议不要使用它,要么使用符合 RFC 的检查器,要么如您所说,放轻松。
  • 哦,我们开始:svn.php.net/repository/php/php-src/branches/PHP_5_3/ext/filter/…php_filter_validate_email 中查找正则表达式。完全符合 RFC 的时间太短了。 :)
  • 我的观点完全正确。符合 RFC 并不意味着它存在并且有效。此外,如果听到所有邮件代理都符合 RFC,我会感到惊讶。
【解决方案3】:

PHP 的 filter_var 可能对大多数应用程序都满意,但如果您想比较性能和有效性,请查看此站点 http://www.linuxjournal.com/article/9585 以了解 RFC 2822 合规性的含义。

【讨论】:

    【解决方案4】:

    我在谷歌搜索时发现了这个, 希望这能更好地解释你

    http://www.addedbytes.com/code/email-address-validation/

    【讨论】:

      【解决方案5】:

      欢迎您使用我的免费 PHP 函数 is_email() 来验证地址。它可用here

      它将确保地址完全符合 RFC 5321。它还可以选择检查域是否实际存在。

      您不应依赖验证器来告诉您用户的电子邮件地址是否真实存在:一些 ISP 会向其用户提供不合规的地址,尤其是在不使用拉丁字母的国家/地区。更多关于电子邮件验证的文章在这里:http://isemail.info/about

      【讨论】:

        猜你喜欢
        • 2017-04-11
        • 2015-12-08
        • 1970-01-01
        • 1970-01-01
        • 2020-02-04
        • 1970-01-01
        • 2021-05-26
        • 1970-01-01
        • 2019-05-28
        相关资源
        最近更新 更多