从服务器电子邮件中收集特定数据(交付失败报告)

时间:2012-05-01 20:11:07

标签: email text preg-match webmail

最近我发送了一份新闻通讯到我拥有的旧电子邮件数据库。创建它几年后,似乎大约30%的电子邮件处于非活动状态 - 我收到了数千封邮件传递失败消息。

所有这些失败通知都作为文本文件存储在我的服务器上,它们是包含我发送给订阅者的文本的回复。 每封电子邮件在其文本中都有用户的ID。这个id前面有一些常见的文本,比如

<a href="abc.com?id=123321"></a>

并且它是'123321'我想从我收到的每个失败报告中提取。

首先,我开始手动完成并逐一收集所有内容。在发了500封电子邮件之后,我的眼睛在地板上感觉到了,我确信有一个解决方案,包括php和一些功能。 我正在考虑将所有这些文件放在一个大文件中,并找到preg_match方法来执行它或尝试使用正则表达式。

您将如何处理此类问题?我应该在哪里寻找解决方案?

1 个答案:

答案 0 :(得分:1)

这似乎对我来说是一个小数据样本。只要你没有尝试一次加载所有数据就没有内存,它应该可以工作:

$data = file_get_contents("data.txt");
preg_match_all('#(?<=<a href="abc\.com\?id=)\d+(?="></a>)#',$data,$matches);
print_r($matches);