无为清净楼资源网 Design By www.qnjia.com
DOMDocument
php提供了非常好用的解析html和xml文档的扩展库DOM,使用这个库可以非常高效的进行html和xml文档的解析,它的原理就是通过寻找首尾匹配对来进行文档的解析。
从上面的分析可以看出,如果首位不匹配,可能就会导致一些错误的出现,因此,这个时候我们需要设置
libxml_use_internal_errors(true);
来进行错误的屏蔽,让它可以解析整个文档。
解析html基本用法
$dom = new \DOMDocument; $content = htmlspecialchars_decode($content); libxml_use_internal_errors(true); $content = mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'); $dom->loadHTML($content);
$content是要解析的html字符串,其中我们对它进行了转义,因为可能含有实体集,然后我们有进行了编码的转换,因为可能文档不是utf-8格式的,会导致日文,法文等文字乱码。
获取元素
$a = $dom->getElementsByTagName('a'); $p = $dom->getElementsByTagName('p');
遍历元素
$elements = $dom->getElementsByTagName('a'); foreach ($elements as $element) { $element->textContent = '替换成其它的文字'; }
通过上面的循环,可以将全部a标签的文字替换掉。
元素嵌套
有些时候,html会嵌套很多层,比如
<div> <p> <a href="xxx" rel="external nofollow" >我是文字</a> </p> <p> 内容替换 </p> </div>
如果我们想要对p标签文字进行替换的化,并且不想要替换含有子元素的内容,就是这里的a标签不想替换,下面的语句不能够解决我们的问题:
$elements = $dom->getElementsByTagName('p'); foreach ($elements as $element) { if($element->hasChildNodes()){ $element->textContent = 'p标签内容替换'; } }
上面的代会将a标签的内容也替换掉,这不是我们想要的结果,因为hasChildNodes()这个函数表示的含有内容,无论它是标签还是文字,它都是返回true的,除非它是空标签,例如
它才会返回false.
所以我们需要自己封装一个函数进行检查是否含有嵌套标签。
function hasChild($element, $tags) { foreach($tags as $v){ $elements = $element->getElementsByTagName($v); if($elements->length){ return true; } } return false; } $tags = array('title','h1','h2','h3','h4','h5','a','p','dd','img'); $elements = $dom->getElementsByTagName('p'); foreach ($elements as $element) { if(hasChild($element, $tags)){ $element->textContent = 'p标签内容替换'; } }
通过我们自己封装的函数,就可以判断出$dom的node节点是否含有子标签。
总结
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
更新日志
2024年09月25日
2024年09月25日
- 《叶倩文 真心真意过一生》[WAV+CUE][400MB]
- 潘越云.1985-世间女子(滚石25周年经典复刻版)【滚石】【WAV+CUE】
- 陈柏宇.2009-CANT.BE.HALF【SONY】【WAV+CUE】
- 李明依.1989-小女生【滚石】【WAV+CUE】
- 《李荣浩 新时代创作新人王》[WAV分轨][310MB]
- 《黑鸭子与马头琴 史上最动听草原音乐》[WAV+CUE][320MB]
- 《汽车发烧音乐精选CD18》[FLAC+CUE][7.1G]
- 郑希怡.2004-Perfect.Date【英皇娱乐】【FLAC分轨】
- 群星.1994-宝丽金超级孖宝2CD【宝丽金】【WAV+CUE】
- 林忆莲.2019-0(2023精装版)【环球】【WAV+CUE】
- Supper.Moment.2016-The.Moment【寰亚】【FLAC分轨】
- 范莉丝.1979-送郎一朵牵牛花(LP版)【大联机构】【WAV+CUE】
- 刘宇.2024-宇宙诗人【哔哟哔哟文化】【FLAC分轨】
- 《全景声白噪音》沉浸式大自然助眠 带你听自然的声音[mp3]
- 纯音入心系列纯音乐《古筝精选 十指弹一赏心曲一心奏出世人心》1CD[MP3][582MB]