php基于DOMDocument操作頁(yè)面元素實(shí)例 原創(chuàng)
問(wèn)題
有如下代碼,要求不使用正則表達(dá)式的情況下修改鏈接為 http://www.fzitv.net/softs/
<p>歡迎訪問(wèn)<span>腳本之家</span>
<a href="http://www.fzitv.net/">軟件下載</a>
</p>解決方法
筆者使用了DOMDocument進(jìn)行操作,實(shí)例如下:
<?php
header('Content-Type: text/html; charset=utf-8');
// 原始HTML代碼
$cont = '<p>歡迎訪問(wèn)<span>腳本之家</span><a href="http://www.fzitv.net/">軟件下載</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.fzitv.net/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>歡迎訪問(wèn)<span>腳本之家</span><a href="http://www.fzitv.net/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>歡迎訪問(wèn)<span>腳本之家</span><a href="http://www.fzitv.net/">軟件下載</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.fzitv.net/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í)再次訪問(wèn),頁(yè)面元素就變成了:
<p>歡迎訪問(wèn)<span>【腳本之家軟件下載】===></span><a href="http://www.fzitv.net/softs/" rel="nofollow">軟件下載</a></p>
- PHP使用DOMDocument類生成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類及SimpleXMLElement類】
- PHP基于DOMDocument解析和生成xml的方法分析
- PHP 中 DOMDocument保存xml時(shí)中文出現(xiàn)亂碼問(wèn)題的解決方案
- php中DOMDocument簡(jiǎn)單用法示例代碼(XML創(chuàng)建、添加、刪除、修改)
- PHP XML操作類DOMDocument
相關(guān)文章
PHP實(shí)現(xiàn)逐行刪除文件右側(cè)空格的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)逐行刪除文件右側(cè)空格的方法,涉及php針對(duì)文件的打開(kāi)、逐行讀取、rtrim函數(shù)刪除右側(cè)空格及文件保存等技巧,需要的朋友可以參考下2015-12-12
幾行代碼輕松實(shí)現(xiàn)PHP文件打包下載zip
這篇文章主要為大家詳細(xì)介紹了使用PHP自帶zlib函數(shù) ,輕松實(shí)現(xiàn)PHP文件打包下載zip,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Laravel?Eloquent?ORM高級(jí)部分解析
這篇文章主要為大家介紹了Laravel?Eloquent?ORM高級(jí)部分解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
php的POSIX 函數(shù)以及進(jìn)程測(cè)試的深入分析
本篇文章是對(duì)php的POSIX函數(shù)以及進(jìn)程測(cè)試進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
php中sort函數(shù)排序知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是一篇關(guān)于php中sort函數(shù)排序知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以參考下。2021-01-01
PHP實(shí)現(xiàn)HTML頁(yè)面靜態(tài)化的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)HTML頁(yè)面靜態(tài)化的方法,分享了靜態(tài)處理的方法,靜態(tài)處理后的優(yōu)勢(shì),并提供了多種靜態(tài)的方法,感興趣的小伙伴們可以參考一下2015-11-11

