我正试图找出解析电子邮件的方法。
我一直试图找出如何搜索第一次出现的格式为
的文本> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:
文本将以> On
开头,以write:
2015年3月12日上午7:47,Mike G写道:
如何在PHP中找到它?
我能做到
$msg = strpos($msg, '> On'); // to get the first position
$msg = strstr($msg, '> On', true); // with PHP 5.3+ to get the text prior the first '> On '
但我需要寻找类似的模式线才能更精确。
我试过这段代码:
$matches = '';
$pattern = "/ On*<[a-zA-Z0-9._-]@[a-zA-Z0-9._-]> wrote:/";
preg_match($pattern, $msg, $matches);
$msg = strstr($msg, $matches, true);
但我在文中没有找到任何结果。
答案 0 :(得分:1)
我认为应该这样做。如果空格是可选的,请将s+
更改为s*
。
preg_match('~>\s+.*?<([^>]*)>\s+wrote:~', '> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:', $email);
echo $email[1];
如果您想要更安全并且还需要“开启”......
preg_match('~>\s+On.*?<([^>]*)>\s+wrote:~', '> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:', $email);