最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php基于DOMDocument操作页面元素实例 <font color=red>原创</font>
时间:2026-09-23 09:40:01 编辑:袖梨 来源:一聚教程网
php基于DOMDocument操作页面元素实例 原创
原创 更新时间:2023年06月27日 09:21:15原创投稿:shichen2014这篇文章主要介绍了php基于DOMDocument操作页面元素,结合实例形式分析了php使用DOMDocument进行页面元素获取与属性修改的相关操作技巧,需要的朋友可以参考下问题
有如下代码,要求不使用正则表达式的情况下修改链接为https://www.jb**5*1.net/softs/
<p>欢迎访问<span>一聚教程网</span><a href="https://www.jb**5*1.net/">软件下载</a></p>
解决方法
笔者使用了DOMDocument进行操作,实例如下:
<?phpheader('Content-Type: text/html; charset=utf-8');// 原始HTML代码$cont = '<p>欢迎访问<span>一聚教程网</span><a href="https://www.jb**5*1.net/">软件下载</a></p>';// 创建DOMDocument对象$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','https://www.jb**5*1.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;?>
运行上述代码,则页面源码即被修改为:
<p>欢迎访问<span>一聚教程网</span><a href="https://www.jb**5*1.net/softs/" rel="nofollow">软件下载</a></p>
这里要注意:loadHTML载入html文本的时候,需要指定编码,笔者这里使用的是mb_convert_encoding($cont, 'HTML-ENTITIES','UTF-8') 进行编码转换,另外笔者所测试网上搜索到的$dom->encoding = 'UTF-8'; 以及$content = mb_convert_encoding($content, 'UTF-8', 'ISO-8859-1');均未起到作用。
补充
此外,修改元素innerHtml属性也很简单,只需要设置其nodeValue值即可,上述示例继续扩展如下:
<?phpheader('Content-Type: text/html; charset=utf-8');//echo $codeid = date('YmdHis').mt_rand(1000,9999);// 原始HTML代码$cont = '<p>欢迎访问<span>一聚教程网</span><a href="https://www.jb**5*1.net/">软件下载</a></p>';// 创建DOMDocument对象$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','https://www.jb**5*1.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;?>
此时再次访问,页面元素就变成了:
<p>欢迎访问<span>【一聚教程网软件下载】===></span><a href="https://www.jb**5*1.net/softs/" rel="nofollow">软件下载</a></p>