【问题标题】:PHP regex for exploding email receivers用于爆炸电子邮件接收器的 PHP 正则表达式
【发布时间】:2012-04-10 13:44:46
【问题描述】:

在我的 sql 中,我有一些包含电子邮件发件人的行。这些发件人是字符串,不通过列分隔。

这是我所在行的 1 个示例。

"Test Example" <test@example.com>, "Second Person" <sperson@example.com>, third@example.com

你可以看到它的纯文本并准备好爆炸。我可以用逗号将其分解并分隔它们。

但今天我意识到了这个例子:

"Test, Example" <test@example.com>, "Second Person" <sperson@example.com>, third@example.com

如您所见,Test 的名称中有一个逗号。所以如果我爆炸它也会爆炸测试。这将导致错误。

我尝试了一些正则表达式,但没有运气。谁能建议我最好的正则表达式来爆炸它们而不是名字。

仅供参考,名称总是在 "" 标记中。所以逗号不是。

如果逗号引号中,我只需要通过即可。

【问题讨论】:

    标签: php regex explode comma


    【解决方案1】:
    explode('>, "', $emails);
    

    然后添加分解的字符 - 或者,更好的是,使用imap_rfc822_parse_adrlist()

    【讨论】:

    • +1 表示imap_rfc822_parse_adrlist()。可能是最好的方法。
    • 我喜欢imap_rfc822_parse_adrlist() 解决方案,但爆炸不是一个好主意。如果&gt;, 之间有空格,它将不起作用。
    • @ColinHebert:FTR,我也不喜欢。我只是想如果已经有一个好的解决方案,我不应该在前卫的解决方案上浪费太多时间。 OP 应该明确使用imap_rfc822_parse_adrlist
    • 感谢大家! imap_rfc822_parse_adrlist 是我需要的!很高兴知道。答案被接受。
    【解决方案2】:

    也许您应该在数据库中验证您的数据,因此某人的姓名不能包含“,”(或其他符号)。

    您不希望您的用户指定您的格式显示,您应该在需要显示时自行设置文本格式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 2014-12-29
      • 1970-01-01
      • 2011-12-28
      • 2012-01-02
      • 2015-12-03
      相关资源
      最近更新 更多