`

正则匹配问题

阅读更多

 

  昨天被一个正则难倒了两个小时,发现发现知识点一不用就会很快忘记。

  使用场景:很多电商平台,经常把商品详情以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>&nbsp; &nbsp; &nbsp; &nbsp;<br/>使用方法<br/><br/><br/> 注意事项<br/><br/><br/> 产品说明<br/><br/><br/> 商品特征<br/> &nbsp; &nbsp;<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>&nbsp; &nbsp; &nbsp; &nbsp;<br/>使用方法<br/><br/><br/> 注意事项<br/><br/><br/> 产品说明<br/><br/><br/> 商品特征<br/> &nbsp; &nbsp;<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>&nbsp; &nbsp; &nbsp; &nbsp;<br/>使用方法<br/><br/><br/> 注意事项<br/><br/><br/> 产品说明<br/><br/><br/> 商品特征<br/> &nbsp; &nbsp;<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] => &nbsp; &nbsp; &nbsp; &nbsp;<br/>使用方法<br/><br/><br/> 注意事项<br/><br/><br/> 产品说明<br/><br/><br/> 商品特征<br/> &nbsp; &nbsp;<br/>
        )

)

  $b[0] 为整体正则匹配到的内容;

  $b[1] 为(.*?)匹配到的内容,即为P标签内的内容;

 然后我们就可以通过原定计划 行事了。

 

1
0
分享到:
评论

相关推荐

    随风正则匹配工具 v1.0.0.0.zip

    随风正则匹配工具支持多语言,自动生成正则文本,根据语言的不同,生成不同的执行语法,匹配成功后直接复制后可到所属语言直接使用。 随风正则匹配工具功能: 一:支持多语言,目前支易、PHP、JSP等 二:自动生成...

    Android常用字符串匹配正则

    isMobileSimple : 验证手机号(简单) isMobileExact : 验证手机号(精确) isTel : 验证电话号码 isIDCard15 : 验证身份证号码15位 isIDCard18 : 验证身份证号码18位 ...getReplaceAll : 替换所有正则匹配的部分

    正则匹配小工具源码.zip

    正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip正则匹配小工具源码.zip...

    全角数字正则匹配后输出半角数字

    全角数字正则匹配后输出半角数字,可以把日期字符串中的全角转换成半角,又便于转换成日期格式

    随风正则匹配工具

    随风正则匹配工具是一款专为用户设计的高效、便捷的正则表达式测试和调试工具。在IT行业中,正则表达式(Regular Expression)是一种强大的文本处理工具,广泛应用于数据验证、搜索替换、文本提取等多种场景。这款...

    易语言正则匹配网页链接

    在提供的压缩包文件"易语言正则匹配网页链接源码"中,应该包含了实现这些功能的具体代码。通过阅读和学习这段源码,你可以了解到如何在易语言中使用正则表达式来解析和处理网页链接,这对于网络爬虫、网页分析等项目...

    正则匹配字符串中是否包含网址

    正则匹配字符串中是否包含网址,跟微信的匹配规则相似。有需要的小伙伴可以下载来试一下,规则基本跟微信的匹配规则相似。

    Go-gohs-Ladon海量正则快速匹配给定一行字符串

    Go-gohs-Ladon充分利用Go语言的并发特性及内存管理优势,通过优化的算法实现快速的正则匹配。其设计目标是提供一个轻量级、高效率且易于使用的解决方案,帮助开发者从大量正则表达式中筛选出有效信息。 2. **核心...

    易语言正则匹配小工具

    通过解析和运行源码,我们可以了解到如何在易语言环境中实现正则匹配和编码转换,从而增强我们的编程技能和解决问题的能力。对于想要提升易语言编程水平和了解正则表达式应用的开发者来说,这是一个很好的实践项目。

    易语言正则表达式类匹配中文

    在易语言中,正则表达式类是一个非常重要的工具,用于处理字符串的模式匹配和查找。在处理中文文本时,这个功能尤为关键,因为中文字符的编码和处理方式与英文有所不同。 正则表达式是用于匹配字符串模式的一种强大...

    关于在LABVIEW中使用正则匹配公式.vi

    在labview中使用正则匹配模式很简单,难的就是使用正则表达式。很多人都搞不明白,查了很多资料还是不太明白。实际上就是一些类似通配符在作怪和其他语言也差不多。附件带上了,可以研究研究,构造正则表达式的方法...

    JAVA正则匹配工具

    常用的绿色的正则匹配工具,平常一直用的。很好用分享一下。

    JavaScript正则表达式匹配 div style标签

    使用DOM解析器可以避免正则表达式处理HTML时可能遇到的许多问题。 总结一下,虽然正则表达式是强大的文本处理工具,但在处理复杂的HTML文档时,它们可能不是最佳选择。尽管如此,在某些特定的简单场景下,通过构建...

    侠客正则匹配工具

    侠客正则匹配工具

    易语言正则万能匹配

    在易语言中,“正则万能匹配”是一个重要的功能,用于处理字符串的模式匹配和查找。本文将深入探讨易语言正则万能匹配的相关知识点,包括正则表达式的基本概念、元字符转义以及相关的函数使用。 首先,我们需要理解...

    简单帅气正则匹配小工具

    "简单帅气正则匹配小工具" 提供了一个直观易用的界面,使得用户能够更加轻松地理解和应用正则表达式。 1. 正则表达式基础: - 基本元素:正则表达式由字符、元字符和量词组成。常见的字符包括字母、数字、空格等,...

    表情代码正则匹配

    项目中常用的 表情代码正则匹配,在数据库中建立表情表,将表情id与其路径转换

    javascript正则匹配页面关键字

    在网页开发中,我们常常需要通过正则表达式来匹配页面上的关键字,以实现诸如搜索高亮、关键词提取等功能。下面我们将详细探讨JavaScript中的正则表达式以及如何在实际应用中进行关键字匹配。 1. 正则表达式基础 -...

    C的正则匹配

    本文将深入探讨C语言中的正则匹配,包括基本概念、API使用及其实现原理。我们将通过分析`regex.c`源码来了解其工作方式。 一、正则表达式基础 1. 正则表达式的组成: - 字符:匹配单个字符,如'a'匹配字符'a'。 ...

    10.1、正则匹配-正则表达式 Regular Expression(一).mp4

    Python零基础10天进阶班【10正则匹配-正则表达式 Regular Expression、树形模型(树形匹配)-intro bs4、爬虫】

Global site tag (gtag.js) - Google Analytics