php基于DOMDocument操作頁(yè)面元素實(shí)例 原創(chuàng)
問(wèn)題
有如下代碼,要求不使用正則表達(dá)式的情況下修改鏈接為 http://www.dbjr.com.cn/softs/
<p>歡迎訪(fǎng)問(wèn)<span>腳本之家</span> <a href="http://www.dbjr.com.cn/">軟件下載</a> </p>
解決方法
筆者使用了DOMDocument進(jìn)行操作,實(shí)例如下:
<?php header('Content-Type: text/html; charset=utf-8'); // 原始HTML代碼 $cont = '<p>歡迎訪(fǎng)問(wèn)<span>腳本之家</span><a href="http://www.dbjr.com.cn/">軟件下載</a></p>'; // 創(chuàng)建DOMDocument對(duì)象 $dom = new DOMDocument(); //$dom->encoding = 'UTF-8'; //@$dom->loadHTML($cont,LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); @$dom->loadHTML(mb_convert_encoding($cont, 'HTML-ENTITIES','UTF-8'),LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $aElem = $dom->getElementsByTagName('a'); $aElem[0]->setAttribute('href','http://www.dbjr.com.cn/softs/'); // 給a鏈接添加rel="nofollow"屬性 $aElem[0]->setAttribute('rel','nofollow'); $content = $dom->saveHTML(); //$content = mb_convert_encoding($content, 'UTF-8', 'ISO-8859-1'); // 輸出修改后的HTML代碼 echo $content; ?>
運(yùn)行上述代碼,則頁(yè)面源碼即被修改為:
<p>歡迎訪(fǎng)問(wèn)<span>腳本之家</span><a href="http://www.dbjr.com.cn/softs/" rel="nofollow">軟件下載</a></p>
這里要注意:loadHTML載入html文本的時(shí)候,需要指定編碼,筆者這里使用的是mb_convert_encoding($cont, 'HTML-ENTITIES','UTF-8')
進(jìn)行編碼轉(zhuǎn)換,另外筆者所測(cè)試網(wǎng)上搜索到的$dom->encoding = 'UTF-8';
以及 $content = mb_convert_encoding($content, 'UTF-8', 'ISO-8859-1');
???均未起到作用。
補(bǔ)充
此外,修改元素innerHtml屬性也很簡(jiǎn)單,只需要設(shè)置其nodeValue值即可,上述示例繼續(xù)擴(kuò)展如下:
<?php header('Content-Type: text/html; charset=utf-8'); //echo $codeid = date('YmdHis').mt_rand(1000,9999); // 原始HTML代碼 $cont = '<p>歡迎訪(fǎng)問(wèn)<span>腳本之家</span><a href="http://www.dbjr.com.cn/">軟件下載</a></p>'; // 創(chuàng)建DOMDocument對(duì)象 $dom = new DOMDocument(); //$dom->encoding = 'UTF-8'; //@$dom->loadHTML($cont,LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); @$dom->loadHTML(mb_convert_encoding($cont, 'HTML-ENTITIES','UTF-8'),LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $aElem = $dom->getElementsByTagName('a'); $aElem[0]->setAttribute('href','http://www.dbjr.com.cn/softs/'); // 給a鏈接添加rel="nofollow"屬性 $aElem[0]->setAttribute('rel','nofollow'); //修改span元素的innerHtml值 $spanElem = $dom->getElementsByTagName('span'); $spanElem[0]->nodeValue = '【腳本之家軟件下載】===>'; $content = $dom->saveHTML(); //$content = mb_convert_encoding($content, 'UTF-8', 'ISO-8859-1'); // 輸出修改后的HTML代碼 echo $content; ?>
此時(shí)再次訪(fǎng)問(wèn),頁(yè)面元素就變成了:
<p>歡迎訪(fǎng)問(wèn)<span>【腳本之家軟件下載】===></span><a href="http://www.dbjr.com.cn/softs/" rel="nofollow">軟件下載</a></p>
- PHP使用DOMDocument類(lèi)生成HTML實(shí)例(包含常見(jiàn)標(biāo)簽元素)
- 如何解決php domdocument找不到的問(wèn)題
- PHP中使用DOMDocument來(lái)處理HTML、XML文檔的示例
- PHP讀取XML文件的方法實(shí)例總結(jié)【DOMDocument及simplexml方法】
- PHP創(chuàng)建XML的方法示例【基于DOMDocument類(lèi)及SimpleXMLElement類(lèi)】
- PHP基于DOMDocument解析和生成xml的方法分析
- PHP 中 DOMDocument保存xml時(shí)中文出現(xiàn)亂碼問(wèn)題的解決方案
- php中DOMDocument簡(jiǎn)單用法示例代碼(XML創(chuàng)建、添加、刪除、修改)
- PHP XML操作類(lèi)DOMDocument
相關(guān)文章
使用Codeigniter重寫(xiě)insert的方法(推薦)
下面小編就為大家?guī)?lái)一篇使用Codeigniter重寫(xiě)insert的方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03php+html5基于websocket實(shí)現(xiàn)聊天室的方法
這篇文章主要介紹了php+html5基于websocket實(shí)現(xiàn)聊天室的方法,實(shí)例分析了php結(jié)合html5的websocket通訊的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07如何直接訪(fǎng)問(wèn)php實(shí)例對(duì)象中的private屬性詳解
這篇文章主要給大家介紹了關(guān)于如何直接訪(fǎng)問(wèn)php實(shí)例對(duì)象中private屬性的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10PHP實(shí)現(xiàn)抓取HTTPS內(nèi)容
這篇文章主要介紹了PHP實(shí)現(xiàn)抓取HTTPS內(nèi)容,以及遇到的問(wèn)題的解決方法,需要的朋友可以參考下2014-12-12