我正在尝试编写一个电子邮件管道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
有人能告诉我第二个正则表达式中缺少什么吗?为什么它不包括“:”之后的整个单词串?
答案 0 :(得分:1)
您正在捕捉\w+
。这只匹配单词字符,不包括空格或括号。
尝试
preg_match_all('/(?P<name>\w+)\s*:\s*(?P<data>.*)/i', $subject, $result);
尝试使用.*?
这将匹配新行字符