Php 不能';无法通过preg_match_all获得期望的结果
我正在尝试编写一个电子邮件管道php脚本,该脚本将通过电子邮件接收传入的流量更新报告,并提取其中的相关信息以存储到数据库中 电子邮件通常以介绍开头,重要信息以以下格式显示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) 注意
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);