日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

domdocument php 扩展_php使用自带dom扩展进行元素匹配的原理解析

發(fā)布時(shí)間:2024/9/19 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 domdocument php 扩展_php使用自带dom扩展进行元素匹配的原理解析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

DOMDocument

php提供了非常好用的解析html和xml文檔的擴(kuò)展庫(kù)DOM,使用這個(gè)庫(kù)可以非常高效的進(jìn)行html和xml文檔的解析,它的原理就是通過(guò)尋找首尾匹配對(duì)來(lái)進(jìn)行文檔的解析。

從上面的分析可以看出,如果首位不匹配,可能就會(huì)導(dǎo)致一些錯(cuò)誤的出現(xiàn),因此,這個(gè)時(shí)候我們需要設(shè)置

libxml_use_internal_errors(true);

來(lái)進(jìn)行錯(cuò)誤的屏蔽,讓它可以解析整個(gè)文檔。

解析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字符串,其中我們對(duì)它進(jìn)行了轉(zhuǎn)義,因?yàn)榭赡芎袑?shí)體集,然后我們有進(jìn)行了編碼的轉(zhuǎn)換,因?yàn)榭赡芪臋n不是utf-8格式的,會(huì)導(dǎo)致日文,法文等文字亂碼。

獲取元素

$a = $dom->getElementsByTagName('a');

$p = $dom->getElementsByTagName('p');

遍歷元素

$elements = $dom->getElementsByTagName('a');

foreach ($elements as $element) {

$element->textContent = '替換成其它的文字';

}

通過(guò)上面的循環(huán),可以將全部a標(biāo)簽的文字替換掉。

元素嵌套

有些時(shí)候,html會(huì)嵌套很多層,比如

我是文字

內(nèi)容替換

如果我們想要對(duì)p標(biāo)簽文字進(jìn)行替換的化,并且不想要替換含有子元素的內(nèi)容,就是這里的a標(biāo)簽不想替換,下面的語(yǔ)句不能夠解決我們的問(wèn)題:

$elements = $dom->getElementsByTagName('p');

foreach ($elements as $element) {

if($element->hasChildNodes()){

$element->textContent = 'p標(biāo)簽內(nèi)容替換';

}

}

上面的代會(huì)將a標(biāo)簽的內(nèi)容也替換掉,這不是我們想要的結(jié)果,因?yàn)閔asChildNodes()這個(gè)函數(shù)表示的含有內(nèi)容,無(wú)論它是標(biāo)簽還是文字,它都是返回true的,除非它是空標(biāo)簽,例如

它才會(huì)返回false.

所以我們需要自己封裝一個(gè)函數(shù)進(jìn)行檢查是否含有嵌套標(biāo)簽。

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標(biāo)簽內(nèi)容替換';

}

}

通過(guò)我們自己封裝的函數(shù),就可以判斷出$dom的node節(jié)點(diǎn)是否含有子標(biāo)簽。

總結(jié)

到此這篇關(guān)于php使用自帶dom擴(kuò)展進(jìn)行元素匹配的文章就介紹到這了,更多相關(guān)php元素匹配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

總結(jié)

以上是生活随笔為你收集整理的domdocument php 扩展_php使用自带dom扩展进行元素匹配的原理解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 狠狠的干狠狠的操 | 亚洲性猛交xxxx乱大交 | 欧亚一级片 | 少妇脚交调教玩男人的视频 | 探花视频在线免费观看 | 亚洲精品国产精品乱码不卡√香蕉 | 欧美生活一级片 | 九九九国产 | 美日韩精品 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 激情另类视频 | 99精品视频免费在线观看 | 人妻妺妺窝人体色www聚色窝 | 国产福利免费看 | 欧美国产一区二区在线观看 | 国产色综合网 | 无码人妻丰满熟妇啪啪欧美 | 日韩黄色影院 | 少妇太紧太爽又黄又硬又爽小说 | 免费三片60分钟 | 无码国产69精品久久久久同性 | 国产一区二区伦理 | 曰本丰满熟妇xxxx性 | 朝桐光av在线一区二区三区 | 99在线精品视频 | 爱情岛亚洲论坛入口福利 | 欧美xxxx黑人xyx性爽 | 香蕉视频在线网站 | 久久99伊人 | 国产夫妻自拍av | 亚洲网站av| 久久草av| 日本道在线观看 | 人妻 日韩精品 中文字幕 | 深夜国产福利 | 亚洲黄色网址大全 | 91成人观看 | 亚洲国产色图 | 国产男男gay| 国产精品亚洲二区在线观看 | 午夜av片 | 国产一区二区三区久久久 | 国产a黄 | 国产一区二区三区在线 | 老司机免费在线视频 | 久久96 | 一区免费在线观看 | 国产又粗又猛又爽又黄的网站 | 国产白丝在线观看 | 男人天堂社区 | 亚洲国产精品人人爽夜夜爽 | 污视频免费在线观看 | 黄视频在线观看免费 | 狠狠躁夜夜躁av无码中文幕 | 日韩欧美精品在线观看 | 日韩手机在线视频 | 国产真人真事毛片 | 亚洲国产成人av | 拔插拔插海外华人永久免费 | 那里可以看毛片 | 91高潮大合集爽到抽搐 | 久热最新视频 | av午夜激情 | 精品国产乱码久久久久久久软件 | 91国产视频在线播放 | 亚洲天堂av一区 | 久久夜色精品国产噜噜亚洲av | 美国一级片网站 | 黄色av免费网站 | 最新日韩中文字幕 | 欧美日韩极品 | 隣の若妻さん波多野结衣 | 国产色播 | 成人av动漫在线 | 国产美女视频一区二区 | 久久久五月天 | 西野翔之公侵犯中文字幕 | 中文字幕人妻无码系列第三区 | 亚洲女同志亚洲女同女播放 | 伊人日韩 | 热99视频| 超碰女优| gav在线 | 人妻一区二区在线 | 欧美在线视频免费 | 亚洲一区二区成人 | 天堂网在线观看 | 天天摸天天插 | av中文字幕在线播放 | 欧美在线不卡 | 日韩不卡在线观看 | 午夜影院免费 | 日日摸夜夜 | 久草视频在线免费看 | 国产男人搡女人免费视频 | 日韩毛片视频 | 久久精品色 | 片集网 | 亚洲欧美一区二区三 |