2012-05-01 2 views
1

최근에 내가 소유하고있는 이전 이메일 데이터베이스로 뉴스 레터를 보냈습니다. 2 년이 지난 후 약 30 %의 이메일이 비활성 상태 인 것으로 나타났습니다. 수천 통의 Mail Delivery Failure 메시지를 받았습니다.서버 이메일에서 특정 데이터 수집 (배달 실패 보고서)

이러한 모든 실패 알림은 내 서버에 텍스트 파일로 저장되며 사용자에게 보낸 텍스트가 포함 된 답장입니다. 각 이메일의 텍스트에는 사용자의 ID가 있습니다. 이 ID는

<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);