Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不能';无法通过preg_match_all获得期望的结果_Php_Regex_Preg Match All - Fatal编程技术网

Php 不能';无法通过preg_match_all获得期望的结果

Php 不能';无法通过preg_match_all获得期望的结果,php,regex,preg-match-all,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\w+):(?p\w+)/i',$subject,$result) 注意

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

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

Highway : Some Highway 
Time : 08-Oct-2010 08:10 AM 
Condition : Smooth (or slow moving etc)
我用这个密码试过了

preg_match_all('/(?p\w+):(?p\w+)/i',$subject,$result)

注意 而匹配项仅限于:

Highway : Some
Datetime : 08
Condition : Smooth

有人能告诉我第二个正则表达式缺少什么吗?为什么它不在“:”之后包含整个字符串?

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

试一试

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

尝试使用
*?
这将使所有内容与新行字符匹配

非常感谢Galen!我可以知道*到底做什么吗?@blacklotus:正则表达式中的Kleene星号(
*
)表示对某事物的零次或多次重复。在这个答案中,
\s*
表示零个或多个空白字符。零部分很重要,因为像
ab*a
这样的东西会匹配
aba
abbbba
,但也会匹配
aa
preg_match_all('/(?P<name>\w+)\s*:\s*(?P<data>.*)/i', $subject, $result);