本文が次のようになっている場合、転送されたメールからのメールとccを取得しようとしています。
$body = '-------
Begin forwarded message:
From: Sarah Johnson <blabla@gmail.com>
Subject: email subject
Date: February 22, 2013 3:48:12 AM
To: Email Recipient <thatwouldbe@yayyy.com>
Cc: Ralph Johnson <johnson@gmail.com>
Hi,
hello, thank you and goodbye!
blabla@gmail.com'
今、私が次のことをするとき:
$body = strtolower($body);
$pattern = '#from: \D*\S([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})\S#';
if (preg_match($pattern, $body, $arr_matches)) {
echo htmlentities($arr_matches[0]);
die();
}
私は正しく得ます:
from: sarah johnson <blabla@gmail.com>
さて、なぜccが機能しないのですか?私は非常によく似た何かをしますが、ccに変更するだけです:
$body = strtolower($body);
$pattern = '#cc: \D*\S([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})\S#';
if (preg_match($pattern, $body, $arr_matches)) {
echo htmlentities($arr_matches[0]);
die();
}
そして私は得る:
cc: ralph johnson <johnson@gmail.com> hi, hello, thank you and goodbye! blabla@gmail.com
元の本文フッターからメールを削除すると(blabla@gmail.comを削除)、正しく次のようになります。
cc: ralph johnson <johnson@gmail.com>
そのメールが正規表現に影響を与えているようです。しかし、どのように、そしてなぜそれはfromでそれに影響を与えないのですか?どうすればこれを修正できますか?