【问题标题】:finding email with preg_match_all使用 preg_match_all 查找电子邮件
【发布时间】:2014-06-26 07:57:48
【问题描述】:

我有这段代码可以在给定的文本中查找电子邮件地址:

preg_match_all("|[a-zA-Z0-9-_.]+@[a-zA-Z0-9-]+.[a-zA-Z]+|",
"</b>a@bexample </b> a@bexample.co ",$out, PREG_PATTERN_ORDER);

输出是这样的:

   Array
       (
       [0] => Array
           (
                [0] => a@bexample//error one
                [1] => a@bexample.co
           )

   )

第一个答案不是真的。为什么?

【问题讨论】:

  • 因为不是有效邮箱,需要域名(.之后的部分)
  • 尝试使用这个正则表达式:"/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6 }\b/i"

标签: php regex preg-match-all


【解决方案1】:

我忘记了“。”之前的“\”。应该是这样的

"|[a-zA-Z0-9-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z]+|"

【讨论】:

  • 您在子域中缺少地址(许多 ccTLD 像 .uk 有强制性的二级,并且有像 k12.us 这样的深层层次结构)。您忽略了包含加号、撇号、百分号和许多其他允许字符的电子邮件地址(我的包含加号,包括 Gmail 在内的许多服务都允许在您的主地址后面加上加号后缀作为一项有用的功能)。请参阅@Ilya 评论中的链接问题以了解更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 2011-02-23
  • 2020-07-28
  • 2017-06-13
  • 1970-01-01
  • 2010-12-12
  • 2013-11-10
相关资源
最近更新 更多