用于爆炸电子邮件接收器的 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()
解决方案,但爆炸不是一个好主意。如果>
和,
之间有空格,它将不起作用。
@ColinHebert:FTR,我也不喜欢。我只是想如果已经有一个好的解决方案,我不应该在前卫的解决方案上浪费太多时间。 OP 应该明确使用imap_rfc822_parse_adrlist
。
感谢大家! imap_rfc822_parse_adrlist 是我需要的!很高兴知道。答案被接受。【参考方案2】:
也许您应该在数据库中验证您的数据,因此某人的姓名不能包含“,”(或其他符号)。
您不希望您的用户指定您的格式显示,您应该在需要显示时自行设置文本格式
【讨论】:
以上是关于用于爆炸电子邮件接收器的 PHP 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章