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

2023-12-07 0 485

问题

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

<p>欢迎访问<span>悠久资源网</span>
<a href=\”https://www.jb51.net/\”>软件下载</a>
</p>

解决方法

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

<?php
header(\’Content-Type: text/html; charset=utf-8\’);
// 原始HTML代码
$cont = \'<p>欢迎访问<span>悠久资源网</span><a href=\”https://www.jb51.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.jb51.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=\”wp-content/uploads/2023/12/\” 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>悠久资源网</span><a href=\”https://www.jb51.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.jb51.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>【悠久资源网软件下载】===&gt;</span><a href=\”wp-content/uploads/2023/12/\” rel=\”nofollow\”>软件下载</a></p>

您可能感兴趣的文章:

  • PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
  • 如何解决php domdocument找不到的问题
  • PHP中使用DOMDocument来处理HTML、XML文档的示例
  • PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
  • PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
  • PHP基于DOMDocument解析和生成xml的方法分析
  • PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
  • php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
  • PHP XML操作类DOMDocument

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PHP php基于DOMDocument操作页面元素实例 原创 https://www.u-9.cn/biancheng/php/128131.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务