Извлечь все заголовки писем, включая часть тела, из почты в php - PullRequest
0 голосов
/ 16 августа 2011

Я хочу извлечь часть тела из следующей цепочки с помощью регулярных выражений в php. Цепная почта сохраняется в формате txt. При извлечении теги html, если они присутствуют в теге body, не должны быть затронуты.

 $content = <<<HEREDOC

    From: Matrimony <matrimony@mangalsutrabandhan.in>
    Sent: Fri, 12 Aug 2011 16:17:40
    To: "matrimony@mangalsutrabandhan.com" <matrimony@mangalsutrabandhan.in>
    Subject: Re: bride search


    From: brides <sales@mangalsutrabandhan.com>
    Sent: Fri, 12 Aug 2011 15:49:52
    To: "Matrimony " <matrimony@mangalsutrabandhan.in>
    Cc: "groom" <brides@mangalsutrabandhan.com>
    Subject: Re: bride search
    PFA

    Regds.,
    sales


    From: shaadi <kundaali@mangalsutrabandhan.in>
    Sent: Tue, 22 Feb 2011 16:40:24
    To: <vivaah@mangalsutrabandhan.com>, <bandhan@mangalsutrabandhan.com>
    Cc: "'lagna '" <lagna@mangalsutrabandhan.in>, <movies@mangalsutrabandhan.in>, <manishv@mangalsutrabandhan.com>, "'beta data'" <channel@mangalsutrabandhan.com>, "'test S'" <city@mangalsutrabandhan.com>
    Subject: Re:data transfer would be made live for 145 test

    This is to inform you that we are going to test today.



    Activity Timing: 9:00 PM onwards



    Thanks and Regards,

    free matrimony

    shaadi Operations


     P  Please do not print this e-mail unless it is absolutely necessary

    From: shaadi [nikaah:kundaali@mangalsutrabandhan.in]
    Sent: 21 February 2011 23:09
    To: vivaah@mangalsutrabandhan.com; bandhan@mangalsutrabandhan.com
    Cc: 'lagna '; movies@mangalsutrabandhan.in; manishv@mangalsutrabandhan.com; 
    Subject: data transfer would be made live for 145 test



    Hi,

    gtsdhsdbh
    anbdsmbsa
    sda the data test .

    Would request you to send in your feedback.



    Thanks and Regards,



    beta data

    assa xyz


     P  Please do not print this e-mail unless it is absolutely necessary



    HEREDOC;

O / P

Array
(
    [0] => Array
        (
            [0] => Re: bride search



            [1] => Re: bride search
PFA

Regds.,
sales



            [2] => Re:data transfer would be made live for 145 test

This is to inform you that we are going to test today.



Activity Timing: 9:00 PM onwards



Thanks and Regards,

free matrimony

shaadi Operations


 P  Please do not print this e-mail unless it is absolutely necessary


        )

    [1] => Array
        (
            [0] => Re: bride search



            [1] => Re: bride search
PFA

Regds.,
sales



            [2] => Re:data transfer would be made live for 145 test

This is to inform you that we are going to test today.



Activity Timing: 9:00 PM onwards



Thanks and Regards,

free matrimony

shaadi Operations


 P  Please do not print this e-mail unless it is absolutely necessary


        )

)

Регулярное выражение, которое я использовал, чтобы получить выше o / p

preg_match_all('/(?<=Subject: )(.*?[\n][\s]*?)(?=From:)/is',$content,$rest);

но он не дает последнего, так как не имеет 'from' для получения промежуточных данных. Надеюсь, это ясно. Пожалуйста, дайте мне знать, если есть какой-либо другой метод, для этого.

preg_match_all('/(?m:^From:\x20(?<From>[^\n]*)\n^Sent:\x20(?<Sent>[^\n]*)\n^To:\x20(?<To>[^\n]*)\n(?:^Cc:\x20(?<Cc>[^\n]*)\n)?^Subject:\x20(?<Subject>[^\n]*)\n)(?<Body>.*?(?=(?:\nFrom:)|$))/s',$content,$matches);
echo "<pre>".print_r($matches,true);

Это обеспечивает почти правильное о / п. Должен ли я предоставить текстовый файл на http://www.mangalsutrabandhan.com

1 Ответ

0 голосов
/ 16 августа 2011

Вам понадобится гораздо более умный анализ, чтобы понять это - что бы ни создавало этот файл, меняется структура писем:

Subject: Re: bride search
PFA

Должна быть как минимум одна пустая строка между тем, чтокажется, является частью заголовка письма и его тела.

Тогда у вас есть проблема top-posting (и вы не можете полагаться на временные метки в заголовках, не знаячасовые пояса), неполные заголовки и без кавычек .

Так что даже если вы построили эвристику для анализа этого, существует слишком много сценариев, с которыми он не справится.

...