1

我有一个通过 imap_headers() 返回的字符串,其格式如下:

Flags Number) Date Sender Subject (Size)

从数组返回的示例字符串是:

A 454)22-Jun-2004 cust.serv@amazon.co.uk Your Amazon.co.uk Order (5284 chars)
1)10-Oct-2010 Gmail Team Get Gmail on your mobile (2457 chars)
5)12-Nov-2010 =?ISO-8859-1?Q?Eric_ For Website (671669 chars)
U 6)17-Nov-2010 no-reply@hostmessage host.net account : boom (2082 chars)

我想解码/解析这个字符串并从这个字符串中创建一个对象。例如

Flags
Date
Sender
Subject

我发现使用 php 字符串函数很难解析它,因为这个字符串只是用空格分隔。有人可以帮我吗?发件人部分也可以是名称,因此我们可以将其视为电子邮件添加或网站 url。

4

1 回答 1

2

正如我在上面的评论中提到的,几乎不可能创建一个适合您的正则表达式,因为您没有提供足够的信息。但是,我会给你一个与你的线路相匹配的例子,也许你可以从那里继续:

preg_match('_([A-Z]+) (\d+)\)(\d+-[A-Za-z]+-\d{4}) (\S+@\S+\.\S+) (.+) \((\d+) chars\)_', $header, $matches);
var_dump($matches);

现在,如果您需要扩展此表达式以考虑可能输出的其他变体,则取决于您的应用程序。您可以在官方文档中阅读我在那里所做的所有细节。

于 2013-01-11T22:30:11.320 回答