preg_match_all匹配重复内容的时候怎么打印出所有被重复匹配的内容

WBOY
发布: 2016-06-13 12:26:22
原创
1124 人浏览过

preg_match_all匹配重复内容的时候如何打印出所有被重复匹配的内容
先贴代码:
$str = '{if aa eq bb or cc eq dd or ee eq ff}';
$patten = '/\{(.*?)eq(.*?)(or(.*?))*\}/';
preg_match_all($patten,$str,$patten_all);
var_dump($patten_all);
我看了下patten_all这个参数我希望保存了所有匹配到的or和之后的内容,但事实上只保存了最后一个匹配的内容,即使缓存preg_match来匹配也没法保存,贴下刚这段代码的运行结果:

如果我现在想要patten_all这个参数能保存所有匹配到所有的or xxx并且保存到数组中话,正则应该怎么改或者该用什么函数呢?
------解决思路----------------------
这样可能符合你的要求

$str = '{if aa eq bb or cc eq dd or ee eq ff}';<br />$patten = '/(?:if<br><font color='#FF8000'>------解决思路----------------------</font><br>or)\s+((\S+)\s+eq\s+([^ }]+))/';<br />preg_match_all($patten,$str,$patten_all);<br />var_dump($patten_all);
登录后复制
array(4) {<br />  [0]=><br />  array(3) {<br />    [0]=><br />    string(11) "if aa eq bb"<br />    [1]=><br />    string(11) "or cc eq dd"<br />    [2]=><br />    string(11) "or ee eq ff"<br />  }<br />  [1]=><br />  array(3) {<br />    [0]=><br />    string(8) "aa eq bb"<br />    [1]=><br />    string(8) "cc eq dd"<br />    [2]=><br />    string(8) "ee eq ff"<br />  }<br />  [2]=><br />  array(3) {<br />    [0]=><br />    string(2) "aa"<br />    [1]=><br />    string(2) "cc"<br />    [2]=><br />    string(2) "ee"<br />  }<br />  [3]=><br />  array(3) {<br />    [0]=><br />    string(2) "bb"<br />    [1]=><br />    string(2) "dd"<br />    [2]=><br />    string(2) "ff"<br />  }<br />}<br /><br />
登录后复制

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!