我正在处理记录发送到某个地址的电子邮件的内容。我有一个PHP脚本,将信息放入MySql,工作正常。
我需要能够根据类似于Gmail的“对话”对邮件进行分组,并且已经对此进行了一些阅读。这不需要是完美的,因为消息在被显示在网站上之前将被手动批准,然后可以纠正任何错误。我只想尽可能减少工作量,以便将新电子邮件与原始邮件自动连接。
我的理解是In-Reply-To
标题可以标识原始邮件,但它的使用不是标准的。
我在另一页上发现了这个:
The most common forms of In-Reply-To seemed to be:
31% NAME's message of TIME <ID@HOST>
22% <ID@HOST>
9% <ID@HOST> from NAME at "TIME"
8% USER's message of TIME <ID@HOST>
7% USER's message of TIME
6% Your message of "TIME"
17% hundreds of other variants (average 0.4% each?)
然而,这似乎表明假设如果存在In-Reply-To字段,那么在其中找到的第一个<>
括号内文本是父消息的消息ID是不合理的。
那么,获得该价值的最简单方法是什么?是否有正则表达式可以让我抓住<
和>
内的任何内容(如果可用)? (根据我发现的帖子,这应该是<
和>
中的第一个值吗?)
感谢您提供的任何帮助。
答案 0 :(得分:2)
你应该能够在后面引用中抓住第一场比赛:
<(.+)>
说明:
// Match the character “<” literally «<»
// Match the regular expression below and capture its match into backreference number 1 «(.+)»
// Match any single character that is not a line break character «.+»
// Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
// Match the character “>” literally «>»
根据this documentation,您可以编写如下内容来完成您想要做的事情(如果这不是有效的PHP,请原谅我):
$string ='blah blah blah <ID@HOST>';
preg_match('/<(.+)>/', $string, $match);
print_r($match);