php基于DOMDocument操作页面元素实例
发布:smiling 来源: PHP粉丝网 添加日期:2023-10-06 17:52:56 浏览: 评论:0
这篇文章主要介绍了php基于DOMDocument操作页面元素,结合实例形式分析了php使用DOMDocument进行页面元素获取与属性修改的相关操作技巧,需要的朋友可以参考下。
问题
有如下代码,要求不使用正则表达式的情况下修改链接为 http://www.phpfensi.com/softs/
- <p>欢迎访问<span>php粉丝网</span>
- <a href="https://www.phpfensi.com/">软件下载</a>
- </p>
解决方法
笔者使用了DOMDocument进行操作,实例如下:
- <?php
- header('Content-Type: text/html; charset=utf-8');
- // 原始HTML代码
- $cont = '<p>欢迎访问<span>php粉丝网</span><a href="https://www.phpfensi.com/">软件下载</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.phpfensi.com/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>php粉丝网</span><a href="https://www.phpfensi.com/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值即可,上述示例继续扩展如下:
- <?php
- header('Content-Type: text/html; charset=utf-8');
- //echo $codeid = date('YmdHis').mt_rand(1000,9999);
- // 原始HTML代码
- $cont = '<p>欢迎访问<span>php粉丝网</span><a href="https://www.phpfensi.com/">软件下载</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.phpfensi.com/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>【php粉丝网软件下载】===></span><a href="https://www.phpfensi.com/softs/" rel="nofollow">软件下载</a></p>
Tags: DOMDocument php操作页面元素实例
- 上一篇:一文总结常用PHP业务逻辑demo
- 下一篇:最后一页
相关文章
- ·PHP DOMDocument实现XML读写操作(2014-08-20)
- ·PHP中DOMDocument生成与解析XML格式数据(2014-08-20)
- ·php DOMDocument removeChild 删除节点函数(2014-08-20)
- ·PHP DOMDocument保存xml时中文出现乱码(2015-04-08)
- ·PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】(2021-12-16)
- ·PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】(2021-12-16)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)