无法通过preg_match_all获得所需的结果

时间:2010-10-08 04:16:48

标签: php regex preg-match-all

我正在尝试编写一个电子邮件管道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);

注意&lt; /真的只是&lt;但不知怎的,他们没有在这里展示。

比赛只有:

Highway : Some
Datetime : 08
Condition : Smooth

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

1 个答案:

答案 0 :(得分:1)

您正在捕捉\w+。这只匹配单词字符,不包括空格或括号。

尝试

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

尝试使用.*?这将匹配新行字符

的所有内容