当前位置:首页 > PHP教程 > php应用 > 列表

php基于DOMDocument操作页面元素实例

发布:smiling 来源: PHP粉丝网  添加日期:2023-10-06 17:52:56 浏览: 评论:0 

这篇文章主要介绍了php基于DOMDocument操作页面元素,结合实例形式分析了php使用DOMDocument进行页面元素获取与属性修改的相关操作技巧,需要的朋友可以参考下。

问题

有如下代码,要求不使用正则表达式的情况下修改链接为 http://www.phpfensi.com/softs/ 

  1. <p>欢迎访问<span>php粉丝网</span> 
  2.     <a href="https://www.phpfensi.com/">软件下载</a> 
  3. </p> 

解决方法

笔者使用了DOMDocument进行操作,实例如下:

  1. <?php 
  2. header('Content-Type: text/html; charset=utf-8'); 
  3. // 原始HTML代码 
  4. $cont = '<p>欢迎访问<span>php粉丝网</span><a href="https://www.phpfensi.com/">软件下载</a></p>'
  5. // 创建DOMDocument对象 
  6. $dom = new DOMDocument(); 
  7. //$dom->encoding = 'UTF-8'; 
  8. //@$dom->loadHTML($cont,LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 
  9. @$dom->loadHTML(mb_convert_encoding($cont'HTML-ENTITIES','UTF-8'),LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 
  10. $aElem = $dom->getElementsByTagName('a'); 
  11. $aElem[0]->setAttribute('href','https://www.phpfensi.com/softs/'); 
  12. // 给a链接添加rel="nofollow"属性 
  13. $aElem[0]->setAttribute('rel','nofollow'); 
  14. $content = $dom->saveHTML(); 
  15. //$content = mb_convert_encoding($content, 'UTF-8', 'ISO-8859-1'); 
  16. // 输出修改后的HTML代码 
  17. echo $content
  18. ?> 

运行上述代码,则页面源码即被修改为:

  1. <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值即可,上述示例继续扩展如下:

  1. <?php 
  2. header('Content-Type: text/html; charset=utf-8'); 
  3. //echo $codeid = date('YmdHis').mt_rand(1000,9999); 
  4. // 原始HTML代码 
  5. $cont = '<p>欢迎访问<span>php粉丝网</span><a href="https://www.phpfensi.com/">软件下载</a></p>'
  6. // 创建DOMDocument对象 
  7. $dom = new DOMDocument(); 
  8. //$dom->encoding = 'UTF-8'; 
  9. //@$dom->loadHTML($cont,LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 
  10. @$dom->loadHTML(mb_convert_encoding($cont'HTML-ENTITIES','UTF-8'),LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 
  11. $aElem = $dom->getElementsByTagName('a'); 
  12. $aElem[0]->setAttribute('href','https://www.phpfensi.com/softs/'); 
  13. // 给a链接添加rel="nofollow"属性 
  14. $aElem[0]->setAttribute('rel','nofollow'); 
  15. //修改span元素的innerHtml值 
  16. $spanElem = $dom->getElementsByTagName('span'); 
  17. $spanElem[0]->nodeValue = '【脚本之家软件下载】===>'
  18. $content = $dom->saveHTML(); 
  19. //$content = mb_convert_encoding($content, 'UTF-8', 'ISO-8859-1'); 
  20. // 输出修改后的HTML代码 
  21. echo $content
  22. ?> 

此时再次访问,页面元素就变成了:

  1. <p>欢迎访问<span>【php粉丝网软件下载】===&gt;</span><a href="https://www.phpfensi.com/softs/" rel="nofollow">软件下载</a></p>

Tags: DOMDocument php操作页面元素实例

分享到: