如何解析HTML / XML并从中提取信息? 答案 原生XML扩展 我更喜欢使用原生XML扩展之一,因为它们与PHP捆绑在一起,通常比所有第三方库更快,并且给我所需的所有控制权。 DOM DOM扩展允许您使用PHP 5通过DOM API操作XML文档。它是W3C的文档对象模型Core Level 3的实现,它是一个平台和语言无关的接口,允许程序和脚本动态访问和更新文件的内容,结构和风格。 DOM能够解析和修改真实世界(损坏的)HTML,并且可以执行XPath查询。它基于libxml。 需要一段时间才能提高DOM的效率,但那个时间值得IMO考虑。由于DOM是一个与语言无关的接口,所以你会发现许多语言的实现,所以如果你需要改变你的编程语言,那么很可能你已经知道如何使用该语言的DOM API了。 一个基本的用法示例可以在抓取A元素的href属性中找到,并且可以在DOMDocument的php中找到一般概念概述 如何使用DOM扩展已经在StackOverflow中得到了广泛的介绍,所以如果您选择使用它,您可以确定您遇到的大部分问题都可以通过搜索/浏览堆栈溢出来解决。 XMLReader的 XMLReader扩展是一个XML拉解析器。阅读器充当向文档流前进的光标,并在途中停止在每个节点。 与DOM类似,XMLReader基于libxml。我不知道如何触发HTML解析器模块,因此使用XMLReader解析断开的HTML可能不如使用DOM,因为它可以明确地告诉它使用libxml的HTML解析器模块。 在使用php获取来自h1标签的所有值时可以找到一个基本用法示例 XML解析器 该扩展允许您创建XML解析器,然后为不同的XML事件定义处理程序。每个XML解析器还有一些可以调整的参数。 XML解析器库也基于libxml,并实现了SAX风格的XML推送解析器。对于内存管理来说,这可能是比DOM或SimpleXML更好的选择,但与XMLReader实现的pull语法分析器相比,将更难以使用。 SimpleXML的 SimpleXML扩展提供了一个非常简单且易于使用的工具集,可将XML转换为可使用常规属性选择器和数组迭代器处理的对象。 当您知道HTML是有效的XHTML时,SimpleXML是一个选项。如果你需要解析破碎的HTML,甚至不要考虑SimpleXml,因为它会窒息。 一个基本的用法示例可以在一个简单的程序中找到xml文件的CRUD节点和节点值,PHP手册中还有很多其他示例。 第三方库(基于libxml) 如果你更喜欢使用第三方库,我建议使用一个实际使用DOM / libxml而不是字符串解析的库。 FluentDom FluentDOM为PHP中的DOMDocument提供了类似jQuery的流畅XML接口。选择器是用XPath或CSS编写的(使用CSS到XPath转换器)。当前版本扩展了DOM实现标准接口并添加了DOM Living标准的功能。FluentDOM可以加载JSON,CSV,JsonML,RabbitFish等格式。可以通过Composer进行安装。 HtmlPageDom Wa72 \ HtmlPageDom是一个PHP库,可以轻松处理HTML文档。它需要Symfony2组件中的DomCrawler遍历DOM树,并通过添加操作HTML文档DOM树的方法来扩展它。 phpQuery(未更新多年) phpQuery是基于PHP5中编写的jQuery JavaScript库的服务器端,可链接,CSS3选择器驱动的文档对象模型(DOM)API,并提供了额外的命令行界面(CLI)。 另见:https : //github.com/electrolinux/phpquery Zend_Dom Zend_Dom提供了用于处理DOM文档和结构的工具。目前,我们提供了Zend_Dom_Query,它提供了一个统一的界面,用于使用XPath和CSS选择器来查询DOM文档。 的QueryPath QueryPath是一个用于处理XML和HTML的PHP​​库。它旨在不仅用于本地文件,还用于Web服务和数据库资源。它实现了大部分的jQuery接口(包括CSS风格的选择器),但是对于服务器端的使用而言,它非常适合。可以通过Composer进行安装。 fDOMDocument fDOMDocument扩展标准DOM以在所有错误场合使用异常,而不是PHP警告或通知。他们还添加了各种自定义方法和快捷方式,以方便并简化DOM的使用。 军刀/ XML saber / xml是一个包装和扩展XMLReader和XMLWriter类的库,以创建一个简单的“xml to object /