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

正在分析电子邮件ID的文本

  •  2
  • abel  · 技术社区  · 15 年前

    我正在尝试使用php/regex解析电子邮件ID的文本。是否有任何类或内置方法来执行此操作? 文本中随机包含多个电子邮件ID。

    文本的来源是.doc文件,然后我将其复制粘贴到表单中,在提交时进行处理。

    preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email) //from php.net
    

    我提交了一个类似的问题 superuser 用于解决该问题的软件解决方案。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Tim Pietzcker    15 年前

    很难准确地检测到嵌入在运行文本中的电子邮件。您要么错误地匹配非电子邮件地址的内容,要么错过一些有效但奇怪的电子邮件地址。

    一个好的起点是

    preg_match_all('/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b/i', $subject, $result, PREG_PATTERN_ORDER);
    for ($i = 0; $i < count($result[0]); $i++) {
        # Matched text = $result[0][$i];
    }
    

    (生成人 RegexBuddy 从图书馆)

    它可以匹配大多数“普通”地址,但找不到类似的地址 mail@1.2.3.4 "Tim\ O'Reilly"@microsoft.com . 当然,它也会像 my@mail.addr .