Сбор определенных данных из электронных писем сервера (отчеты об ошибках доставки)

Недавно я отправил информационный бюллетень в старую базу данных электронной почты, которой я владею. По прошествии нескольких лет, похоже, что примерно 30% этих писем неактивны - я получил тысячи сообщений о сбое доставки почты.

Все эти уведомления об ошибках хранятся на моем сервере в виде текстовых файлов и представляют собой ответы, содержащие текст, который я отправил своим подписчикам. Каждое письмо имеет в своем тексте идентификатор пользователя. Этот идентификатор предшествует немного общего текста, что-то вроде

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

и это "123321", который я хочу извлечь из каждого полученного сообщения об ошибке.

Сначала я начал делать это вручную и собирать все по одному. После 500 писем мои глаза чувствуются на полу, и я уверен, что есть решение с php и некоторыми функциями. Я думал о том, чтобы поместить их все в один большой файл и найти способ сделать это с помощью preg_match или попробовать что-то с помощью выражений регулярных выражений.

Как бы вы справились с такой проблемой и где мне искать решение?

1 ответ

Решение

Похоже, это работает для меня для небольшой выборки данных. До тех пор, пока вы не исчерпаете память, пытаясь загрузить все данные одновременно, это должно работать:

$data = file_get_contents("data.txt");
preg_match_all('#(?<=<a href="abc\.com\?id=)\d+(?="></a>)#',$data,$matches);
print_r($matches);
Другие вопросы по тегам