PHP Native DOMDocument和Simple DOM Parser – 是否有大小限制?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP Native DOMDocument和Simple DOM Parser – 是否有大小限制?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2191字,纯文字阅读大概需要4分钟。
内容图文
![PHP Native DOMDocument和Simple DOM Parser – 是否有大小限制?](/upload/InfoBanner/zyjiaocheng/762/246057ae5be14851b8a719e7116d7058.jpg)
我需要解析HTML文档的内容(由Microsoft Word生成).遍历DOM以获取我需要的信息/内容,然后输出所需的CSV.我知道,几乎没有脑部手术.
现在因为PHP不是我的事情而且我有一个紧张的时间表我将使用http://simplehtmldom.sourceforge.net/的PHP Simple HTML DOM Parser
我注意到我的脚本无效.经过反复试验,我意识到这是由于Word生成的HTML文件的文件大小(它们是3MB,并且有多达30,000行HTML!).我假设有一个文件大小限制,可以使用PHP Simple HTML DOM Parser和本机PHP DOMDocument API解析什么?如果是这种情况有人知道这个限制是什么?我现在谷歌搜索40分钟没有成功.
也许我应该只使用Node.js?
解决方法:
PHP“Native”DOMDocumentDocs及其小妹妹SimpleXMLElementDocs没有硬化的大小限制,但它们受到允许PHP使用的内存的限制(见PHP memory limitDocs).
此外,您不能假设加载100 MB XML或HTML文件将消耗相同大小的内存.它通常比文件大小更少的内存(例如,五分之一或十分之一或甚至,取决于XML,所以你不能只在这里说因子X而是你需要衡量自己的内容,如果你想获得精确的信息).
你在问题中给出的文件大小–3 MB – 我说的相当小.对于互联网上的HTML文件来说可能不小,但对于基于libxml的PHP扩展来说可能很小.使用memory_get_usage()Docs加载该文件时,可以了解PHP中的内存使用情况.
如果你有非常大的XML文件 – 那么通常是X(HT)ML – 比方说1.5千兆字节 – 使用DOMDocument进行解析会花费很多时间.然后使用XMLReaderDocs将允许您解析文档而不将其加载到内存中(完全).但它不是银弹,因为你仍然有解析时间,但你可以更好地控制要解析的内容和要跳过的部分,这样你就有更多的空间来控制PHP用户空间的优化.
PHP库PHP Simple HTML DOM ParserDocs也没有强加特定的大小限制.但它不是PHP的二进制扩展,而是PHP用户空间.因此,您需要更好地了解该库的确切功能(参见simple_html_dom.php in HEAD revision).如果你查看代码,你会发现它是一个纯粹用PHP编写的解析器.这是因为它是为PHP 4编写的,其中DOMDocument :: loadHTML的DOMDocument尚不存在.
可以想象,PHP扩展可以比用PHP代码编写的PHP库更好地管理内存.特别是当涉及HTML Document对象模型的树结构时(这句话本身并不属实,但是开发这种优化的内存需要大量的工作和良好的设计,并不总是易于创建和维护).
但是:多年以来,没有必要再使用该库了.许多PHP用户不知道这一点,并且他们使用曾经流行的库找到过时的代码示例. PHP Simple Simple DOM Parser库甚至还在Stackoverflow上不时得到建议.
因此,我可以给出的最佳建议是:除非您不需要编写PHP 4兼容代码,否则根本不要使用该库,也不要关心它的限制.而是将代码移植到DOMDocument::loadHTML()Docs.
内容总结
以上是互联网集市为您收集整理的PHP Native DOMDocument和Simple DOM Parser – 是否有大小限制?全部内容,希望文章能够帮你解决PHP Native DOMDocument和Simple DOM Parser – 是否有大小限制?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。