代码之家  ›  专栏  ›  技术社区  ›  MrValdez

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

  •  7
  • MrValdez  · 技术社区  · 16 年前

    我需要验证我的用户的电子邮件地址。不幸的是,使验证器 conforms to standards 这很难。

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

    7 回复  |  直到 3 年前
        1
  •  16
  •   Chris    13 年前

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

    filter_var($someEmail, FILTER_VALIDATE_EMAIL);

        2
  •  12
  •   PhiLho    16 年前

    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验证电子邮件,我建议使用正则表达式来拆分@,然后分别检查本地名和域名。将以“开头的本地名称与其他情况等分开。将以[开头的域名与其他情况等分开。在较小的特定域中存在拆分问题,并且仅在定义良好、更简单的情况下使用正则表达式。

        3
  •  10
  •   Dominic Sayers    13 年前

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

    我现在整理了来自卡尔·亨德森、戴夫·奇尔德、菲尔·哈克、道格·洛维尔和RFC3696的测试用例。总共158个测试地址。

    我对我能找到的所有验证器运行了所有这些测试。比较如下: http://www.dominicsayers.com/isemail

    my own validator .

    人们应该意识到 errata against RFC 3696 320

        4
  •  8
  •   Community Egal    7 年前

    Cal Henderson (指Flickr)写了一篇 RFC822 compliant email address matcher ,并解释RFC和利用RFC匹配电子邮件地址的代码。我已经用了很长时间了,没有任何抱怨。

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

    ... 使现代化

    Porges 在评论中指出,图书馆上的链接已经过时,但该页面上有一个指向 updated version

        5
  •  5
  •   MrValdez    16 年前

    我在谷歌代码中找到了一个库: http://code.google.com/p/php-email-address-validation/

    还有其他的吗?

        6
  •  1
  •   Rexxars    16 年前

    Zend_Validate 包括电子邮件验证程序。

    有很多用于验证的正则表达式,从非常基本到非常高级。

        7
  •  0
  •   Peter Mortensen John Conde    3 年前

    source

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

    $mail_validator = new Zend_Validate_EmailAddress();
    $mail_validator->isValid($address);   // returns true or false
    

    最好的办法是通过 svn external 并指向它的包含路径。。。

    但是你可以下载必要的文件( 1 , 2 , 3 , 4 5 , 6 ),并将它们全部包括在内(删除 需要一次 电话)。