Outlook からエクスポートされた電子メールを含むテキスト ファイルを解析 (分割) する必要があります。preg_split
を使用して分割していますPREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE
私の目標は、正規表現を使用してメッセージ ヘッダー セクションをキャプチャすることです。つまり、"From:" 行から始まり、メッセージ本文の前の空白行で終わります。
制約:
- 多言語フィールド名が必要
- ヘッダー フィールドの数はさまざまです (CC、BCC、添付ファイル)
- 一部のフィールドは複数の行にある場合があります (宛先、CC、BCC、件名、添付ファイル)
テキスト ファイルは前処理されます。複数のスペースとタブを 1 つのスペースに置き換え、先頭と末尾のスペースを置き換えます。
私は一日中それに取り組んでいましたが、最後の部分を機能させることができません。[gskinner 正規表現テスト ページ]: http://regexr.com?36v27では機能しますが、php では機能しません。
主題:
From: Black, Jack (LA)
Sent: Monday, October 28, 2013 6:36 PM
To: George, Jackson (London); DCS.CC.DARWIN (Australia)
Cc: Bar, Foo (Istanbul); Ex, Reg (Istanbul); Smith, John (Istanbul); Rambo,
John J. (Gaziantep); Matrix, John (Phuket)
Subject: RE: PREVENTIVE AND CORRECTIVE ACTIONS / FOOBAR
Dear George,
venenatis imperdiet quam. Proin a egestas nunc, et mattis elit. In hac habitasse platea dictumst. Nulla dolor nibh, tempus ut neque eu, tempus fermentum mauris. Mauris nec ipsum nec sapien commodo scelerisque ut eu urna. Pellentesque eu neque in enim adipiscing faucibus. Sed interdum arcu et sem mollis iaculis. Duis euismod laoreet ligula lacinia dapibus. Vestibulum ullamcorper malesuada metus at malesuada.
Nullam enim elit, auctor vehicula orci eget, imperdiet feugiat odio. Etiam dapibus sagittis sem a varius. Nulla sit amet convallis mi, sit amet rutrum ipsum. In libero lectus, mattis at dui eu.
Thank you and best regards,
Jack B. Black (Mr)
Operations Manager (GGD)
FU Supervisor (R34, R57)
Phone: +1112212212 (local 1111)
Mobile: +12 121.111.11.12
From: George, Jackson (UK)
Sent: Monday, October 28, 2013 5:57 PM
To: DCS.CC.DARWIN (Australia)
Bar, Foo (Istanbul); Ex, Reg (Istanbul); Smith, John (Istanbul); Rambo,
John J. (Gaziantep); Matrix, John (Phuket)
Subject: PREVENTIVE AND CORRECTIVE ACTIONS / FOOBAR
Dear Colleagues,
ermentum. Duis ipsum quam, bibendum a risus nec, tincidunt fringilla lectus. Nunc vel dictum massa, et cursus nunc. Mauris tincidunt felis eget justo congue volutpat. Nulla condimentum accumsan elementum. Integer commodo, lorem eu pharetra suscipit, ligula.
Best Regards.
SDFD srfgGD
Field coordinator (GGD)
Customer Representative
sds dfsd sdfgsef sdfsd
sgzdfgdfg fgfg gdfg
Footer text etc
sdfdfdf dfgsdfgsdfgsdfg
Phone : +90 212 368 40 00 (ext:3814)
正規表現:
preg_match(
'/ # delimiter
( # capturing group start
[\ A-Z][a-z]+:.+\(.+\)\R # From: field
[A-Z][a-z]+:.+\R # Sent: fields
[A-Z][a-z]+:.+\R # To: field (1st line)
(?:.+\R)+ # any additional header lines, before blank line (To, CC, BCC, Subject, Attachments)
) # capturing group end
# delimiter + modifiers /x',$text_clean, $matches);
echo '<b>Matches: '.count($matches).'</b>';
print_r($matches);
追加のヘッダー行の取得に問題があります:
(?:.+\R)+ # any additional header lines...
どんな助けでも大歓迎です