gpt4 book ai didi

php - 可能跨越多行的电子邮件地址列表的正则表达式

转载 作者:搜寻专家 更新时间:2023-10-31 21:36:39 25 4
gpt4 key购买 nike

我想从转发的电子邮件中扫描电子邮件正文以获取电子邮件地址列表,例如:

From: John Smith <john@example.com>
To: Jane Smith <jane@example.com>, Mary Smith
<mary@example.com>
Cc: Ed Smith <ed@example.com>
Subject: this is a test

我将使用 Mail_RFC822::parseAddressList() 来完全解析每个列表(里面有很多细节,所以我不应该尝试重新设计它),但我确实想拔出线来交给这个功能。我有一个简单的正则表达式,它只查找包含电子邮件地址的行,并且大部分时间都有效。

但在实际情况中,有时会出现如上例所示的电子邮件,其中名称和地址被拆分到不同的行中。如果我逐行执行,上面 To: 行的上半部分将无法在 parseAddressList() 中进行解析,因为没有地址的名称是无效的;下半部分将进行解析,但会丢失上一行中的名称。

所以我需要一个可以同时查看多行的正则表达式,这使我的专业知识变得复杂。只要不断找到基本的电子邮件模式 ([\w\.\+\-]+@[\w\.\-]+\.[\w\.\-]+ ... 不需要是完美的)但在行的开头没有单词冒号组合 (^\S*:) 这样,如上例所示,Cc: 行是一个单独的匹配项。预先感谢您的帮助。

最佳答案

您可以预处理字符串以删除 < 之前的新行字符,然后将结果传递给您的 parseAddressList功能。

比如替换 /(?:\r?\n|\r)\s*</< :

$emails = Mail_RFC822::parseAddressList(preg_replace('/(?:\r?\n|\r)\s*</', '<', $emailHeaders));

关于php - 可能跨越多行的电子邮件地址列表的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17729435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com