iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中怎么使用DOMDocument来处理HTML、XML文档
  • 358
分享到

PHP中怎么使用DOMDocument来处理HTML、XML文档

2023-06-14 06:06:17 358人浏览 八月长安
摘要

小编给大家分享一下PHP中怎么使用DOMDocument来处理html、XML文档,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!PHP中使用DOMDocument来处理HTML、XML文档解析HTML// 解析&

小编给大家分享一下PHP中怎么使用DOMDocument来处理html、XML文档,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

PHP中使用DOMDocument来处理HTML、XML文档

解析HTML

// 解析 HTML$baidu = file_get_contents('https://www.baidu.com');$doc = new DOMDocument();@$doc->loadHTML($baidu);// 百度输出框$inputSearch = $doc->getElementById('kw');var_dump($inputSearch);// object(DOMElement)#2 //     ....echo $inputSearch->getAttribute('name'), php_EOL; // wd// 获取所有图片的链接$allImageLinks = [];$imgs = $doc->getElementsByTagName('img');foreach($imgs as $img){    $allImageLinks[] = $img->getAttribute('src');}print_r($allImageLinks);// Array// (//     [0] => //www.baidu.com/img/baidu_jgyloGo3.gif//     [1] => //www.baidu.com/img/bd_logo.png//     [2] => Https://file.lsjlt.com/upload/202306/13/yv4hagzspbg.jpg// )// 利用 parse_url 分析链接foreach($allImageLinks as $link){    print_r(parse_url($link));}// Array// (//     [host] => www.baidu.com//     [path] => /img/baidu_jgylogo3.gif// )// Array// (//     [host] => www.baidu.com//     [path] => /img/bd_logo.png// )// Array// (//     [scheme] => http//     [host] => s1.bdstatic.com//     [path] => /r/www/cache/static/global/img/gs_237f015b.gif// )

是不是感觉好清晰,好有面向对象的感觉。就像第一次使用 ORM库 来进行数据库操作一样的感觉。我们一段一段来看。

$baidu = file_get_contents('https://www.baidu.com');$doc = new DOMDocument();@$doc->loadHTML($baidu);

首先是加载文档内容,这个比较好理解,直接使用 loadHTML() 方法加载 HTML 内容。它还提供了其它的几个方法,分别是:load() 从一个文件加载XML;loadXML() 从字符串加载XML;loadHTMLFile() 从文件加载HTML。

// 百度输出框$inputSearch = $doc->getElementById('kw');var_dump($inputSearch);// object(DOMElement)#2 //     ....echo $inputSearch->getAttribute('name'), PHP_EOL; // wd

接下来我们使用和前端 js 一样的 DOM 操作api来操作HTML里面的元素。这个例子中就是获取百度的文本框,直接使用 getElementById() 方法获得id为指定内容的 DOMElement 对象。然后就可以获取它的值、属性之类的内容了。

【相关推荐:PHP视频教程

// 获取所有图片的链接$allImageLinks = [];$imgs = $doc->getElementsByTagName('img');foreach($imgs as $img){    $allImageLinks[] = $img->getAttribute('src');}print_r($allImageLinks);// Array// (//     [0] => //www.baidu.com/img/baidu_jgylogo3.gif//     [1] => //www.baidu.com/img/bd_logo.png//     [2] => https://file.lsjlt.com/upload/202306/13/yv4hagzspbg.jpg// )// 利用 parse_url 分析链接foreach($allImageLinks as $link){    print_r(parse_url($link));}// Array// (//     [host] => www.baidu.com//     [path] => /img/baidu_jgylogo3.gif// )// Array// (//     [host] => www.baidu.com//     [path] => /img/bd_logo.png// )// Array// (//     [scheme] => http//     [host] => s1.bdstatic.com//     [path] => /r/www/cache/static/global/img/gs_237f015b.gif// )

这一段例子则是获取HTML文档中所有的图片链接。相比正则来说,是不是方便很多,而且代码本身就是自解释的,不用考虑正则的匹配失效的问题。配合另外一个PHP中自带的 parse_url() 方法也能非常方便地对链接进行分析,提取自己想要的内容。

XML的解析和对HTML的解析也是类似的,都使用 DOMDocument 和 DOMElement 提供的这个方法接口就可以很方便的进行解析了。那么我们想要生成一个标准格式的XML呢?当然也非常的简单,不需要再去拼接字符串了,使用这个类一样的进行对象化的操作。

生成一个XML

// 生成一个XML文档$xml = new DOMDocument('1.0', 'UTF-8');$node1 = $xml->createElement('First', 'This is First Node.');$node1->setAttribute('type', '1');$node2 = $xml->createElement('Second');$node2->setAttribute('type', '2');$node2_child = $xml->createElement('Second-Child', 'This is Second Node Child.');$node2->appendChild($node2_child);$xml->appendChild($node1);$xml->appendChild($node2);print $xml->saveXML();

其实只要有一点点的前端 JS 的基础都不难看出这段代码的含义。使用 createElement() 方法创造 DOMElement 对象,然后就可以为它添加属性和内容。使用 appendChild() 方法就可以为当前的 DOMElement 或者 DOMDocument 添加下级节点。最后使用 saveXML() 就能够生成标准的XML格式内容了。

总结

通过上面两个简单的小例子,相信大家已经对这个 DOMDocument 操作XML类文件解析的方式非常感兴趣了。不过相对于正则解析的方式它们的性能有多大的差异并没有找到相关的测试,不过一般正常的情况下网站的HMTL文档都不会太大,毕竟各个网站也会考虑自身的加载速度,如果文档非常大的话用户体验也会很差,所以这套接口用来进行日常爬虫的分析处理工作基本是没有任何问题的。

测试代码:
https://GitHub.com/zhangyue0503/dev-blog/blob/master/php/202002/source/PHP%E4%B8%AD%E4%BD%BF%E7%94%A8DOMDocument%E6%9D%A5%E5%A4%84%E7%90%86HTML%E3%80%81XML%E6%96%87%E6%A1%A3.php

看完了这篇文章,相信你对“PHP中怎么使用DOMDocument来处理HTML、XML文档”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网PHP编程频道,感谢各位的阅读!

--结束END--

本文标题: PHP中怎么使用DOMDocument来处理HTML、XML文档

本文链接: https://www.lsjlt.com/news/268317.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP中怎么使用DOMDocument来处理HTML、XML文档
    小编给大家分享一下PHP中怎么使用DOMDocument来处理HTML、XML文档,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!PHP中使用DOMDocument来处理HTML、XML文档解析HTML// 解析&...
    99+
    2023-06-14
  • PHP中如何使用DOMDocument来处理HTML、XML文档
    这篇文章主要介绍了PHP中如何使用DOMDocument来处理HTML、XML文档,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php有什么特点1、执行速度快。2、具有很好的...
    99+
    2023-06-14
  • PHP中使用DOMDocument来处理HTML、XML文档的示例
    目录解析HTML生成一个XML总结其实从PHP5开始,PHP就为我们提供了一个强大的解析和生成XML相关操作的类,也就是我们今天要讲的 DOMDocument 类。不过我估计大部分人...
    99+
    2024-04-02
  • PHP中怎么使用XMLReader解析XML文档
    PHP中怎么使用XMLReader解析XML文档,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。PHP XMLReader的代码示例如下:< PHP &...
    99+
    2023-06-17
  • 如何使用sp_xml_preparedocument处理XML文档
    如何使用sp_xml_preparedocument处理XML文档,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。有时会在存储过...
    99+
    2024-04-02
  • php中的xml文件怎么处理
    在 PHP 中处理 XML 文件通常需要使用 SimpleXML 扩展或者 DOM 扩展。以下是一些常用的处理 XML 文件的方法:...
    99+
    2024-04-02
  • 如何使用BeautifulSoup处理XML文档中的XML命名空间前缀
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • lxml怎么处理XML文档的命名空间
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • HTML怎么使文档垂直居中
    这篇文章主要介绍“HTML怎么使文档垂直居中”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML怎么使文档垂直居中”文章能帮助大家解决问题。 处理逻辑是: 1...
    99+
    2024-04-02
  • 怎么为XML文档使用属性选择器
    这篇文章主要介绍怎么为XML文档使用属性选择器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 属性选择器在 XML 文档中相当有用,因为 XML 语言主张要针对元素和属性的用途指定...
    99+
    2024-04-02
  • C#中怎么利用XMLTextReader类读取XML文档
    今天就跟大家聊聊有关C#中怎么利用XMLTextReader类读取XML文档,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#读取XML文档之在.NET框架的System.XML名称...
    99+
    2023-06-18
  • lxml怎么处理包含多个命名空间的XML文档
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • 如何在PHP中使用自然语言处理来处理文本?
    自然语言处理(NLP)是一种人工智能技术,用于处理自然语言文本。在PHP中,有许多工具和库可供使用,以便开发人员能够轻松地在其应用程序中集成NLP。在本文中,我们将探讨如何在PHP中使用自然语言处理来处理文本。 安装依赖 首先,我们需要...
    99+
    2023-06-29
    自然语言处理 numpy 接口
  • 怎么使用Shell解析处理XML
    这篇文章给大家分享的是有关怎么使用Shell解析处理XML的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言前几天在干活的时候遇到一个需要解析处理xml文件的一个需求,当时考虑到逻辑比较复杂,因此用java慢慢搞...
    99+
    2023-06-09
  • python中使用docx模块处理word文档
    目录一.docx模块二.相关概念三.模块的安装和导入四.读取word文本一.docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是...
    99+
    2023-01-05
    python docx模块 python处理word文档 用Python操作Word文档
  • 如何在Linux中使用PHP和Apache来处理文件?
    在Linux系统中,PHP和Apache是两个非常常见的开源软件。PHP是一种脚本语言,用于编写动态网页,而Apache则是一个流行的Web服务器软件。在本文中,我们将介绍如何在Linux中使用PHP和Apache来处理文件。 安装PHP和...
    99+
    2023-06-30
    apache 文件 linux
  • PHP 中如何使用 NPM 包来处理文件对象?
    在 PHP 开发中,经常需要对文件进行处理,例如上传、下载、修改等。为了更高效地处理文件,我们可以使用 NPM 包来提供更多的功能和工具。 在本文中,我们将介绍如何使用 NPM 包来处理文件对象。首先,我们需要安装 NPM 包管理器,然后...
    99+
    2023-11-12
    npm 文件 对象
  • Android中的Xml 文档怎么利用XmlPullParser 进行解析
    这期内容当中小编将会给大家带来有关Android中的Xml 文档怎么利用XmlPullParser 进行解析 ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Android XmlPullParser 方式...
    99+
    2023-05-31
    android xmlpullparser xml
  • 怎么使用POI将HTML文件转换为Word文档
    这篇文章主要讲解了“怎么使用POI将HTML文件转换为Word文档”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用POI将HTML文件转换为Word文档”吧!首先,我们需要在代码中添加...
    99+
    2023-07-06
  • php文本文档编辑框怎么使用
    这篇文章主要讲解了“php文本文档编辑框怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php文本文档编辑框怎么使用”吧!   使用方法:   因...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作