昨天被一个正则难倒了两个小时,发现发现知识点一不用就会很快忘记。
使用场景:很多电商平台,经常把商品详情以HTML的形式存入到数据库字段中,然后无论做APP接口还是别的应用,取出来就拿去用比较方便,但是如果详情页需要变动,需要维护的商品详情页就会有很大的工作量,比如今年3.15过后,电商要求电子商务的商品需要在商品详情页加上价格说明图片在商品详情页,所以我是打算用正则来做这一部分,但是当正则匹配的时候出现了很多问题,因为好久不用正则,很生疏!!!!
商品详情字段存储的HTML: <p><img src="/public/images/20170321/1490084253328704.jpg" style="" title="1490084253328704.jpg"/></p><p><img src="/public/images/20170321/1490084253537364.jpg" style="" title="1490084253537364.jpg"/></p><p><img src="/public/images/20170321/1490084253799043.jpg" style="" title="1490084253799043.jpg"/></p><p><img src="/public/images/20170321/1490084253123933.jpg" style="" title="1490084253123933.jpg"/></p><p> <br/>使用方法<br/><br/><br/> 注意事项<br/><br/><br/> 产品说明<br/><br/><br/> 商品特征<br/> <br/></p>
基本就是p标签包围img标签的样子,最后一个包围的是参数之类的,我们需要把后台配置的价格说明图插入到参数说明之前,我的方法是匹配p标签的内容,然后替换参数部分,在把参数部分补足p标签加到替换之后的字符串的后面。代码实现如下:
$str = '<p><img src="/public/images/20170321/1490084253328704.jpg" style="" title="1490084253328704.jpg"/></p><p><img src="/public/images/20170321/1490084253537364.jpg" style="" title="1490084253537364.jpg"/></p><p><img src="/public/images/20170321/1490084253799043.jpg" style="" title="1490084253799043.jpg"/></p><p><img src="/public/images/20170321/1490084253123933.jpg" style="" title="1490084253123933.jpg"/></p><p> <br/>使用方法<br/><br/><br/> 注意事项<br/><br/><br/> 产品说明<br/><br/><br/> 商品特征<br/> <br/></p>';
preg_match_all('/<p>(.*?)<\/p>/', $str, $b);
$count = count($b[0]);
$c = str_replace($b[0][$count-1],'<p><img src="http://img4.imgtn.bdimg.com/it/u=3677832436,4238861421&fm=214&gp=0.jpg"></p>'.$b[0][$count-1],$str);
print_r($c);die;
preg_match_all('/<p>(.*?)<\/p>/', $str, $b)
默认模式下 PREG_PATTERN_ORDER
如果匹配到的话 $p会产生一个二维数组
Array ( [0] => Array ( [0] => <p><img src="/public/images/20170321/1490084253328704.jpg" style="" title="1490084253328704.jpg"/></p> [1] => <p><img src="/public/images/20170321/1490084253537364.jpg" style="" title="1490084253537364.jpg"/></p> [2] => <p><img src="/public/images/20170321/1490084253799043.jpg" style="" title="1490084253799043.jpg"/></p> [3] => <p><img src="/public/images/20170321/1490084253123933.jpg" style="" title="1490084253123933.jpg"/></p> [4] => <p> <br/>使用方法<br/><br/><br/> 注意事项<br/><br/><br/> 产品说明<br/><br/><br/> 商品特征<br/> <br/></p> ) [1] => Array ( [0] => <img src="/public/images/20170321/1490084253328704.jpg" style="" title="1490084253328704.jpg"/> [1] => <img src="/public/images/20170321/1490084253537364.jpg" style="" title="1490084253537364.jpg"/> [2] => <img src="/public/images/20170321/1490084253799043.jpg" style="" title="1490084253799043.jpg"/> [3] => <img src="/public/images/20170321/1490084253123933.jpg" style="" title="1490084253123933.jpg"/> [4] => <br/>使用方法<br/><br/><br/> 注意事项<br/><br/><br/> 产品说明<br/><br/><br/> 商品特征<br/> <br/> ) )
$b[0] 为整体正则匹配到的内容;
$b[1] 为(.*?)匹配到的内容,即为P标签内的内容;
然后我们就可以通过原定计划 行事了。
相关推荐
正则匹配代码\正则匹配代码\正则匹配代码\正则匹配代码
isMobileSimple : 验证手机号(简单) isMobileExact : 验证手机号(精确) isTel : 验证电话号码 isIDCard15 : 验证身份证号码15位 isIDCard18 : 验证身份证号码18位 ...getReplaceAll : 替换所有正则匹配的部分
随风正则匹配工具支持多语言,自动生成正则文本,根据语言的不同,生成不同的执行语法,匹配成功后直接复制后可到所属语言直接使用。 随风正则匹配工具功能: 一:支持多语言,目前支易、PHP、JSP等 二:自动生成...
正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip...
全角数字正则匹配后输出半角数字,可以把日期字符串中的全角转换成半角,又便于转换成日期格式
多数正则匹配,电子邮箱 15位或18位身份证号码 信用卡号、借记卡号 身份证号、统一社会信用代码等 军官证 护照号 港澳通行证 组织机构代码 纳税人识别号 工商登记号或营业执照号 出生日期、发卡日期等 金额 公司网站...
asp.net正则匹配特定汉字匹配格式为2012年第001期(总第001期)asp.net正则匹配特定汉字匹配格式为2012年第001期(总第001期)asp.net正则匹配特定汉字匹配格式为2012年第001期(总第001期)asp.net正则匹配特定汉字匹配...
正则匹配URL
正则匹配字符串中是否包含网址,跟微信的匹配规则相似。有需要的小伙伴可以下载来试一下,规则基本跟微信的匹配规则相似。
在labview中使用正则匹配模式很简单,难的就是使用正则表达式。很多人都搞不明白,查了很多资料还是不太明白。实际上就是一些类似通配符在作怪和其他语言也差不多。附件带上了,可以研究研究,构造正则表达式的方法...
让你爱上正则,简单帅气的正则匹配小工具,还等什么赶快下载把,支持各种正则匹配,让你不再为正则感觉头疼
随风正则匹配工具
易语言正则表达式类匹配中文源码,正则表达式类匹配中文,创建,取正则文本,替换,取匹配数量,取匹配文本,取子匹配文本,取子匹配数量
常用的绿色的正则匹配工具,平常一直用的。很好用分享一下。
易语言正则匹配网页链接源码,正则匹配网页链接
侠客正则匹配工具
javascript正则匹配页面关键字,内附详细代码
易语言正则万能匹配源码,正则万能匹配,正则元字符转义,文本_替换,创建,取正则文本,替换,取匹配数量,取匹配文本,取子匹配文本,取子匹配数量
项目中常用的 表情代码正则匹配,在数据库中建立表情表,将表情id与其路径转换
Python零基础10天进阶班【10正则匹配-正则表达式 Regular Expression、树形模型(树形匹配)-intro bs4、爬虫】