0

我正在尝试编写一个电子邮件管道 php 脚本,该脚本将通过电子邮件获取传入的流量更新报告,并提取其中的相关信息以存储到数据库中。

电子邮件通常以一些介绍开头,重要信息以以下格式显示。

Highway : Some Highway 
Time : 08-Oct-2010 08:10 AM 
Condition : Smooth (or slow moving etc)

我试过这段代码

preg_match_all('/(?P<\name>\w+) : (?P<\data>\w+)/i', $subject, $result);

请注意 </ 实际上只是 < 但不知何故它们没有在这里显示。

比赛只有:

Highway : Some
Datetime : 08
Condition : Smooth

谁能告诉我我的第二个正则表达式中缺少什么?为什么它不包括“:”之后的整个单词串?

4

1 回答 1

1

您正在捕获\w+. 仅匹配单词字符,不包括空格或括号。

尝试

preg_match_all('/(?P<name>\w+)\s*:\s*(?P<data>.*)/i', $subject, $result);

尝试使用.*?这会将所有内容匹配到换行符

于 2010-10-08T04:26:46.490 回答