PHP正则匹配html标签

一、前言

1、匹配字符串时用:.*? 或 [^\<]+\ 或 [^\<]+
2、preg_match匹配结果为1个,preg_match_all匹配结果为多个
3、如果有标签结束,则要加符号\,例如<\/div>,如果只需要匹配标签里的属性,就不需要匹配标签的结束符号<\/标签名>
4、preg_match_all匹配多个时,每一个()里对应一个结果数组,默认匹配返回所有内容,preg_match_all返回的数组数量 = 1 + ()的个数
5、相关文章 正则表达式 - php正则匹配内容?https://www.php.cn/php-weizijiaocheng-285574.html

二、小例子

1、需求:获取下面字符串中EAT的内容

NAME=姓名;AGE=99;EAT=APPLE;TIME=1234567890

2、实现

//获取下面字符串中EAT的值
$string = 'NAME=姓名;AGE=99;EAT=APPLE;TIME=1234567890';$pattern = '/EAT=([^;]+)/';  //从EAT= 开始匹配 匹配到非;(^;)结束(即匹配到第一个分号结束)
preg_match_all($pattern, $string, $result);var_export($result);die;

3、打印

array (0 => array (0 => 'EAT=APPLE',),1 => array (0 => 'APPLE',),
)

4、匹配语句解析

从EAT= 开始匹配 匹配到非;^;)结束(即匹配到第一个分号结束)

三、代码

<?phpnamespace app\index\controller;class Ablog extends Base
{public function test4(){//获取Html字符串$html = $this->getHtml();//打印标题$this->searchTitle($html);//打印内容$this->searchContent($html);}public function searchContent($html){
//        $pattern1 = '/<div class="info" id=".*?">[^\"]+<\/div>/';$pattern1 = '/<div class="info" id=".*?">[^\<]+\<\/div>/';
//        $pattern2 = '/<div class="info" id="(.*?)">([^\"]+)<\/div>/';$pattern2 = '/<div class="info" id="(.*?)">([^\<]+)<\/div>/';preg_match($pattern1, $html, $matches1One);        //匹配单个preg_match_all($pattern1, $html, $matches1More);   //匹配多个var_export($matches1One);<<<EOFmatches1One:打印
array (0 => '<div class="info" id="96">回来的时候换了一条路。那里进过广场的公园。一如既往的有好多手机贴膜的小贩还有只有一个板凳面前一张纸卖电话卡的小贩。</div>',
)
EOF;var_export($matches1More);<<<EOFmatches1More:打印
array (0 => array (0 => '<div class="info" id="96">回来的时候换了一条路。那里进过广场的公园。一如既往的有好多手机贴膜的小贩还有只有一个板凳面前一张纸卖电话卡的小贩。</div>',1 => '<div class="info" id="97">我看见石榴花开了,红的黄的真的特别的好看。月季依然开得很娇艳。</div>',),
)
EOF;preg_match($pattern2, $html, $matches2One);        //匹配所有preg_match_all($pattern2, $html, $matches2More);        //匹配所有var_export($matches2One);<<<EOFmatches2One:打印
array (0 => '<div class="info" id="96">回来的时候换了一条路。那里进过广场的公园。一如既往的有好多手机贴膜的小贩还有只有一个板凳面前一张纸卖电话卡的小贩。</div>',1 => '96',2 => '回来的时候换了一条路。那里进过广场的公园。一如既往的有好多手机贴膜的小贩还有只有一个板凳面前一张纸卖电话卡的小贩。',
)
EOF;var_export($matches2More);<<<EOFmatches2More:打印
array (0 => array (0 => '<div class="info" id="96">回来的时候换了一条路。那里进过广场的公园。一如既往的有好多手机贴膜的小贩还有只有一个板凳面前一张纸卖电话卡的小贩。</div>',1 => '<div class="info" id="97">我看见石榴花开了,红的黄的真的特别的好看。月季依然开得很娇艳。</div>',),1 => array (0 => '96',1 => '97',),2 => array (0 => '回来的时候换了一条路。那里进过广场的公园。一如既往的有好多手机贴膜的小贩还有只有一个板凳面前一张纸卖电话卡的小贩。',1 => '我看见石榴花开了,红的黄的真的特别的好看。月季依然开得很娇艳。',),
)
EOF;}public function searchTitle($html){$titlePattern1 = '/<h2>.*?<\/h2>/';  //匹配:(h2标签 + 标签里的内容)$titlePattern2 = '/<h2>(.*?)<\/h2>/';//匹配:(h2标签 + 标签里的内容)和 (h2标签里的内容)//titlePattern1preg_match($titlePattern1, $html, $titleMatches1One);        //匹配单个preg_match_all($titlePattern1, $html, $titleMatches1More);   //匹配多个var_export($titleMatches1One);<<<EOFtitleMatches1One:打印
array (0 => '<h2>美好的一天</h2>',
)
EOF;var_export($titleMatches1More);<<<EOFtitleMatches1More:打印
array (0 => array (0 => '<h2>美好的一天</h2>',),
)
EOF;//titlePattern2preg_match($titlePattern2, $html, $titleMatches2One);        //匹配单个preg_match_all($titlePattern2, $html, $titleMatches2More);   //匹配多个var_export($titleMatches2One);<<<EOFtitleMatches2One:打印
array (0 => '<h2>美好的一天</h2>',1 => '美好的一天',
)
EOF;var_export($titleMatches2More);<<<EOFtitleMatches2More:打印
array (0 => array (0 => '<h2>美好的一天</h2>',),1 => array (0 => '美好的一天',),
)
EOF;}public function getHtml(){$html = '<html>
<head><title>大家好</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<!-- 文章START -->
<div class="whole"><!-- 标题START --><div class="head"><h2>美好的一天</h2><div><span>御风剑士</span><span>2019-04-24</span></div></div><!-- 标题SEND --><!-- 内容START --><div class="content"><a href="http://www.***.com"><img src="http://images.***.com"/></a><div class="info" id="96">回来的时候换了一条路。那里进过广场的公园。一如既往的有好多手机贴膜的小贩还有只有一个板凳面前一张纸卖电话卡的小贩。</div><div class="info" id="97">我看见石榴花开了,红的黄的真的特别的好看。月季依然开得很娇艳。</div></div><!-- 内容END --></div>
<!-- 文章END -->
</body>
</html>';return $html;}
}

PHP正则匹配html标签相关推荐

  1. php 正则匹配img标签中的自定义属性值

    php 正则匹配img标签中的自定义属性值 将原始的字符串 正则匹配替换成指定的字符串类型 如以下的字符串: $str="<p>张三去吃饭喝酒</p><p> ...

  2. js正则匹配闭合标签_正则匹配闭合HTML标签(支持嵌套)

    OK,先确定我们要解决的问题--从一段Html文本中找出特定id的标签的innerHTML. 这里面最大的难点就是,Html标签是支持嵌套的,怎么能够找到指定标签相对应的闭合标签呢? 我们可以这样想, ...

  3. php正则匹配input,正则表达式 - php正则匹配p标签及带特定的中文

    easyui在录入的时候如果录入html标签,则在datagrid显示的是标签,但是在input或者textarea里显示的又是正常的,将对应的符号转换成html代码则datagrid显示正常,inp ...

  4. 使用正则匹配iframe标签

    let reg =/<iframe(([\s\S])*?)<\/iframe>/ig;//匹配iframe标签 let regTest = reg.test(textareaVal) ...

  5. 正则匹配html标签和内容,正则匹配HTML标签(不保留内容和保留内容、过滤标签的的属性)...

    1.匹配双标签(包括内容),过滤标签,不保留内容. var reg1 = /]*>(.|\n)*/gi; var str1 = '我是被删除的123123'; console.log(str1. ...

  6. Python正则匹配HTML,python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结...

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  7. js正则匹配闭合标签_我从Vue源码中学到的一些JS编程技巧

    在我们面试的过程中,经常会遇到问源码的环节,因为优秀的框架通常都会包含很多设计理念跟编程实践.这段时间我一直在看Vue2的源码,发现了很多有意思的实现.虽然现在Vue3都已经发布了,也无法否认Vue2 ...

  8. js正则匹配闭合标签_正则表达式匹配封闭html标签

    统计代码行数 , 只需一个正则就 搞定.嵌套 Html 标签的匹配是正则表达式应用中一个比较难的话题,因为它涉 及到的正则语法比较多,也比较难.因此也就更有研究的价值. 思路 任何复杂的正则表达式都是 ...

  9. python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  10. python正则匹配html标签_Python正则获取、过滤或者替换HTML标签的方法

    本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法,具体内容如下 python正则表达式关键内容: python正则表达式转义符: . 匹配除换行符以外的任意字符 ...

最新文章

  1. 不是变量 win10_在win10下安装manim
  2. 华东交通大学2017年ACM双基程序设计大赛题解
  3. 一个DDOS病毒的分析(二)
  4. java复选框批量删除_vue+element+Java实现批量删除功能
  5. 计算机科学全程,EduGlobalB2B德保罗大学金融计算机科学硕士桥梁STEM全程免GREGMAT...
  6. aix 文件升级-替换
  7. 华为hcia认证有哪些方向?华为hcia认证哪些方向比较好,值得推荐?
  8. 计算机模拟求解流体力学方程,计算流体力学CFD及其应用
  9. java文本文档统计字数,行走目录时字数统计PDF文件
  10. 矩阵分析与应用-16-广义逆矩阵
  11. 网上商城系统支付方式如何配置?支付方式有哪些
  12. 一键生成iosandroid应用图标
  13. jwt_token的有效时间和刷新时间
  14. python轰炸敌机小游戏_python实现飞机大战微信小游戏
  15. 蚂蚁笔记(leanote)搭建
  16. 微服务拆分:业务横向拆分和纵向拆分
  17. mysql+查询触发器+sql_Mysql基本查询、视图、索引、触发器
  18. 使用Cydia Impactor免越狱安装ipa
  19. input框动态模糊查询,能输入,能选择
  20. 性能监控工具-----ServerAgent

热门文章

  1. 几个常用的shell脚本
  2. 第十一届河南省程序设计大赛----部分题解
  3. workman php教程_Workerman
  4. linux查看内网命令,nmap命令查看内网信息的几个...-centos6.3中lspci查看硬件信息提...-学习linux cut 命令的用法_169IT.COM...
  5. java awt run_JAVA教程 第五讲 AWT图形用户界面设计(一)
  6. jquery 下载 安装 浏览器支持
  7. xmlObj转为数组
  8. java中的new BufferedReader(new InputStreamReader(System.in))
  9. 利用自定义注解,AOP + redis限制ip访问接口次数
  10. xampp的安装和配置