Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有用于电子邮件地址验证的php库?_Php_Email_Open Source_Email Validation - Fatal编程技术网

是否有用于电子邮件地址验证的php库?

是否有用于电子邮件地址验证的php库?,php,email,open-source,email-validation,Php,Email,Open Source,Email Validation,我需要验证我的用户的电子邮件地址。不幸的是,制作验证器很难 是试图符合标准的正则表达式的示例 是否有验证电子邮件地址的PHP库(最好是开源的) 我在谷歌代码中找到了一个库: 还有其他的吗?你看过吗?它们并不完美,但根据我的经验,它们做得相当不错 示例用法(返回布尔值): filter\u var($someEmail,filter\u VALIDATE\u EMAIL)好的,验证电子邮件的唯一好方法是发送电子邮件,并查看用户是否使用此电子邮件中的链接返回站点。很多网站都是这样做的 正如您在著名的

我需要验证我的用户的电子邮件地址。不幸的是,制作验证器很难

是试图符合标准的正则表达式的示例


是否有验证电子邮件地址的PHP库(最好是开源的)

我在谷歌代码中找到了一个库:

还有其他的吗?

你看过吗?它们并不完美,但根据我的经验,它们做得相当不错

示例用法(返回布尔值):


filter\u var($someEmail,filter\u VALIDATE\u EMAIL)

好的,验证电子邮件的唯一好方法是发送电子邮件,并查看用户是否使用此电子邮件中的链接返回站点。很多网站都是这样做的

正如您在著名的mammoth regex链接中指出的,验证所有形式的电子邮件地址都很困难,几乎不可能。即使是普通风格的电子邮件,也很容易出错(我发现太多网站拒绝电子邮件地址中的大写字母!大多数旧正则表达式拒绝超过4个字母的TLD!)

AFAIK,“Jean-Luc B.O'Grady”@example.com和e=m.c^2@[82.128.45.117]都是有效地址。。。我自己做的-Up@Absurd-Domain-Name.info可能无效

因此,不知何故,我只需检查我们是否有一些东西,一个唯一的@,一些其他的东西,然后继续:它将捕获大多数用户错误(如空字段或用户名而不是电子邮件地址)。
若用户想要提供一个假地址,它只会提供一些看起来正确的随机地址(see@on.tv或者比尔。gates@microsoft.com). 而且没有验证器会发现打字错误(jhon)。b@example.com而不是约翰。b@example.com)

如果有人真的想根据完整的RFC验证电子邮件,我建议使用正则表达式来拆分@,然后分别检查本地名和域名。将以“开头的本地名称的大小写与其他情况等分开。将以[开头的域名的大小写与其他情况等分开。在较小的特定域中存在拆分问题,并且仅在定义良好的简单情况下使用正则表达式。
这个建议可以应用于很多正则表达式的使用,当然…

包括一个电子邮件验证程序

有很多用于验证的正则表达式,从非常基本到非常高级。
您真的应该选择与应用程序中有效电子邮件的重要性相匹配的内容。

我建议您查看Zend_Validate_EmailAddress[]的源代码

修复依赖项后,您只需执行以下操作:

$mail_validator = new Zend_Validate_EmailAddress();
$mail_validator->isValid($address);   // returns true or false
最好是通过svn external将完整的Zend库放入您的项目中,并指向它的include路径

但是你只需下载必要的文件(,,,,),并将它们全部包括在内(删除require_once调用)

(Flickr的)写了一篇文章,解释了RFC和利用RFC匹配电子邮件地址的代码。我已经使用它很长时间了,没有任何抱怨

RFC822(1982年出版)定义:, 除其他事项外,还包括 互联网短信(电子邮件) 地址。您可以通过以下方式找到RFC 谷歌搜索-有很多的副本 他们在网上。他们有点简洁 格式怪异,但有一个 不费吹灰之力我们就能看到它们是什么 接近

…更新


正如评论中指出的,链接上的库已过时,但该页面有指向的链接。

[更新]我已经在这里整理了我所知道的关于电子邮件地址验证的所有信息:,它现在不仅可以验证电子邮件地址,还可以诊断电子邮件地址的问题。我同意这里的许多评论,即验证只是答案的一部分;请参阅我的文章

我现在已经整理了来自CalHenderson、DaveChild、PhilHaack、DougLovell和RFC3696的测试用例。总共158个测试地址

我对我能找到的所有验证器运行了所有这些测试。比较如下:

我将努力使这一页保持最新,因为人们增强了他们的验证器。感谢Cal、Dave和Phil在编译这些测试方面的帮助和合作以及对这些测试的建设性批评


人们应该特别注意这一点。三个典型的例子实际上是无效地址。地址的最大长度是254或256个字符,而不是320。

我在几个项目中使用了它的前身,到目前为止还没有任何问题。我说去吧。这是一个有效的答案,我通常会这么做。但对于这个特定的客户,我需要一种方法来检查电子邮件是否有效。电子邮件验证的替代方法是要求用户输入两次电子邮件,我强烈反对这种做法。希望我能说服他们不要这样做。重复输入有什么错?这是一种快速、廉价且简单的方法,可以确保用户没有胖手指键入电子邮件地址时,他们的电子邮件地址。如果您确实需要验证电子邮件地址的格式是否有效,Dominic的回答(以及链接的站点)似乎包含了我见过的最全面的信息。@afrazier:“复式输入有什么错?“嗯,如果人们喜欢我,他们只需将第一个条目复制/粘贴到第二个条目中,因此好处是无效的……我们是在谈论电子邮件还是电子邮件地址?我指的是电子邮件地址。我已更正了我的问题以反映这一点。谢谢我正在编写一个简单的(非企业)代码。”需要基本验证器的应用程序。虽然FILTER\u VALIDATE\u EMAIL似乎没有完全实现该规范——例如,它在某些测试中失败——但它似乎“足够好”为了满足我当前的需要。谢谢!谢谢你这么做;有真实的数据来处理,而不仅仅是猜测,这真是太棒了。你还可以包括本页提到的其他库吗?值得注意的是,正如引用所指出的,RFC822是古老的。事实上,淘汰822(2822)的RFC也是过时的,这表明它是多么过时:)当前电子邮件地址的RFC是5322,在这个答案的月份发布!