正则提取PHP代码里的部分数据

前两天一个网友在群里问用正则如何把

是张三 测试成功
		
			

提取中间没有的代码

因为本人很久没写代码了,所以下载安装了RegexBuddy 作为正则调试工具,立马找网页看了下正则参考手册 是在是痛苦啊,好久没写都忘记了,接下来就是花了10多分钟看


后来写上

([^]*)<\/if>
发现测试成功,因为好久没写的缘故,其实是错误的,因为测试器全部标黄了 我以为是可以了,其实是全部匹配到了最后,这个接下来解释

后来我就大胆的告诉他们可以了,群里那小伙测试一下不行啊,怎么匹配截断了一部分,这时候冒出一家伙 说你那是理论,具体行不行还需要调试,然后各种喷,还发了自己的东西上来,先替换什么的,搞得和php模板替换一样的复杂,我说大哥 不要那样做,你告诉想法是对的,但是处理太复杂了(黑猫白猫抓得住耗子就是好猫,但是还是要效率)


哥都不写代码了,没测试环境,被喷也无怨言了,和那小伙说等我回家给调试,回家后刚好有篮球活动,饭都没吃立马去打(身体是革命本钱啊,虽然要言而有信,但是也不能让哥累跨了吧)


然后回来我把php环境工具都copy到U盘里,早上来就开始调试

后来发现原来是(.*)把后面带"的都匹配到了,结果表现为

"张三 == 张三">是张三 是张三 测试成功
		
			';
preg_match_all('/([^]*)<\/if>/is',$str,$arry);
print_r($arry);
?>
终于没问题了


说明:如果写成

([^]*)<\/if>
会匹配到所有condition=""直到遇到>的数据,所以上面出现了问题


第一次写 语无伦次的,请见谅

你可能感兴趣的:(正则,PHP)