正则提取PHP代码里的部分数据
来源:互联网 发布:mac windows10截图 编辑:程序博客网 时间:2024/05/17 07:48
前两天一个网友在群里问用正则如何把
<if condition="张三 == 张三">是张三</if> <if condition="11>1">测试成功</if></td><td><if condition="1 > 0">男<else>女</if>
提取<if></if>中间没有<else>的代码
因为本人很久没写代码了,所以下载安装了RegexBuddy 作为正则调试工具,立马找网页看了下正则参考手册 是在是痛苦啊,好久没写都忘记了,接下来就是花了10多分钟看
后来写上
<if condition="(.*)">([^<else>]*)<\/if>发现测试成功,因为好久没写的缘故,其实是错误的,因为测试器全部标黄了 我以为是可以了,其实是全部匹配到了最后,这个接下来解释
后来我就大胆的告诉他们可以了,群里那小伙测试一下不行啊,怎么匹配截断了一部分,这时候冒出一家伙 说你那是理论,具体行不行还需要调试,然后各种喷,还发了自己的东西上来,先替换<else>什么的,搞得和php模板替换一样的复杂,我说大哥 不要那样做,你告诉想法是对的,但是处理太复杂了(黑猫白猫抓得住耗子就是好猫,但是还是要效率)
哥都不写代码了,没测试环境,被喷也无怨言了,和那小伙说等我回家给调试,回家后刚好有篮球活动,饭都没吃立马去打(身体是革命本钱啊,虽然要言而有信,但是也不能让哥累跨了吧)
然后回来我把php环境工具都copy到U盘里,早上来就开始调试
后来发现原来是(.*)把后面带"的都匹配到了,结果表现为
"张三 == 张三">是张三</if> <if condition="11>1结果一番调试最后
<?php$str='<if condition="张三 == 张三">是张三</if> <if condition="11>1">测试成功</if></td><td><if condition="1 > 0">男<else>女</if>';preg_match_all('/<if condition="(.+?)">([^<else>]*)<\/if>/is',$str,$arry);print_r($arry);?>终于没问题了
说明:如果写成
<if condition="(.*)">([^<else>]*)<\/if>会匹配到所有condition=""直到遇到>的数据,所以上面出现了问题
第一次写 语无伦次的,请见谅
- 正则提取PHP代码里的部分数据
- 提取照片里的PPT部分
- 正则提取手机号(PHP代码/函数)
- 正则提取邮箱(PHP代码/函数)
- PHP完美的提取链接正则
- php 正则 提取html img的地址
- PHP完美的提取链接正则
- 【php】正则表达式提取img的src
- 正则表达式提取数据的方法
- 正则表达式提取Json数据的方法
- 正则表达式提取html标签里的内容
- 正则表达式提取HTML页面的特定部分
- Java正则表达式, 提取双引号中间的部分
- php里日期的部分显示
- Python爬虫---数据的提取---正则/Xpath/beautifulsoup--正则
- PHP里的正则表达式分组
- 正则表达式在PHP里的应用
- php 提取数组中重复的数据
- android-Service和Thread的区别
- ExtJs4 笔记(5) Ext.Button 按钮
- Android 去掉横竖屏切换时的转屏动画
- lxc调用init流程
- 堆和栈的区别
- 正则提取PHP代码里的部分数据
- 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误
- haskell(26)
- HTML标签初识
- ExtJs4 笔记(6) Ext.MessageBox 消息对话框
- SQL Server Group By 区分大小写
- 创建Java内部类的编译错误处理
- java中this的用法
- ui designer