用于爆炸电子邮件接收器的 PHP 正则表达式

Posted

技术标签:

【中文标题】用于爆炸电子邮件接收器的 PHP 正则表达式【英文标题】:PHP regex for exploding email receivers 【发布时间】: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 的名称中有一个逗号。所以如果我爆炸它也会爆炸测试。这将导致错误。

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

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

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

【问题讨论】:

【参考方案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】:

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

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

【讨论】:

以上是关于用于爆炸电子邮件接收器的 PHP 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

10个常用的PHP正则表达式

使用正则表达式使用python 2.7提取电子邮件接收者[重复]

PHP正则表达式

在 PHP 中使用正则表达式进行电子邮件验证

用于电子邮件验证的正则表达式。 [复制]

C# 中用于电子邮件验证的最佳正则表达式