有一个用于电子邮件地址验证的PHP库吗?
我需要验证我的用户的电子邮件地址。 不幸的是,制作符合标准的验证器非常困难
这是一个试图符合标准的正则表达式的例子
是否有任何PHP库(最好是开源的)验证电子邮件地址?
你看过PHP的filter_函数吗? 他们并不完美,但他们在我的经历中做了相当体面的工作。
用法示例(返回布尔值):
filter_var($someEmail, FILTER_VALIDATE_EMAIL);
AFAIK,验证电子邮件的唯一好方法是发送电子邮件,并查看用户是否使用此电子邮件中的链接返回网站。 这是很多网站所做的。
正如你指出的与众所周知的庞大正则表达式的链接,验证所有形式的电子邮件地址是很难的,几乎不可能。 即使是微不足道的风格电子邮件(我发现太多站点拒绝电子邮件地址上限!),而且大多数旧的正则表达式拒绝超过4个字母的TLD,这很容易做错。
AFAIK,“Jean-Luc B. O'Grady”@ example.com和e = mc ^ 2 @ [82.128.45.117]都是有效的地址......而我自制的@ Absurd-Domain-Name。信息可能无效。
因此,不管怎样,我都会检查我们是否拥有一些独特的@,其他的东西,并遵循它:它会捕获大多数用户错误(如空字段或用户名而不是电子邮件地址)。
如果用户想给出一个虚假的地址,它只会给随机看起来正确的东西(see@on.tv或bill.gates@microsoft.com)。 没有验证器会捕获拼写错误(jhon.b@example.com而不是john.b@example.com)。
如果真的想要验证电子邮件是否符合完整的RFC,我会建议使用正则表达式来分割@,然后分别检查本地名称和域名。 以“从其他案件开始”等单独的案例开始。单独的案例以[从其他案例开始]等形式分割案例。在较小的特定领域中拆分问题,仅在定义明确,简单的案例中使用正则表达式。
当然,这个建议可以应用到很多正则表达式中
[已更新]我整理了关于电子邮件地址验证的所有信息:http://isemail.info,它现在不仅可以验证电子邮件地址,还可以诊断问题。 我同意这里的许多评论,验证只是答案的一部分; 在http://isemail.info/about上看到我的论文。
我现在整理了来自Cal Henderson,Dave Child,Phil Haack,Doug Lovell和RFC 3696的测试用例。共有158个测试地址。
我对所有可以找到的验证器运行了所有这些测试。 比较如下:http://www.dominicsayers.com/isemail
我会尽力让这个页面保持最新,因为人们可以增强他们的验证器。 感谢Cal,Dave和Phil在编写这些测试方面提供的帮助和合作,并对我自己的验证器进行了建设性的批评。
人们应特别注意针对RFC 3696的勘误。 其中三个规范示例实际上是无效地址。 地址的最大长度是254或256个字符, 而不是 320。
链接地址: http://www.djcxy.com/p/2705.html上一篇: Is there a php library for email address validation?
下一篇: Does PHP's filter