PHP Dom文件html更快还是preg_match_all函数更快?

时间:2011-01-03 22:21:57

标签: php dom

我怀疑哪一个处理速度更快?

使用curl函数的dom文件或preg_match_all在html页面解析中更快?将dom文件功能留在其他服务器上如curl函数吗?例如,在curl函数中,我们使用用户代理来定义谁正在访问,但在dom文档中没有任何内容。

3 个答案:

答案 0 :(得分:5)

如果一个人给你不正确的结果,哪个更快更重要?

与正则表达式匹配以从文档中获取单个数据将比解析整个HTML文档更快。但正则表达式无法在所有情况下正确解析HTML。

请参阅http://htmlparsing.com/regexes.html,我已开始解决这个常见问题。 (对于其他人来说,我可以使用帮助。源代码在github上,我需要许多不同语言的示例。)

答案 1 :(得分:1)

正则表达式可能会更快,但它们也可能是更糟糕的选择。除非您对应用程序进行了基准测试和分析,并且没有发现任何其他优化内容,否则您应该查看正确的现有解析器。

虽然正则表达式可用于匹配HTML,it takes a thorough effort to come up with a reliable parserPHP offers a bunch of native extensions to work with XML(和HTML)可靠。还有许多第三方图书馆。见我的回答

对于发送自定义用户代理,也可以使用DOM。您必须create a custom stream contextattach it with the underlying libxml functions。您可以提供任何available HTTP Stream context options this way。见我的回答

有关如何提供自定义UserAgent的示例。

答案 2 :(得分:0)

dom函数与html提取没有任何关系。

然而,有些加载函数可用于直接获取http资源。

如果没有上下文参数,它们将显示与file_get_contents相同的行为。

关于你问题的其他部分。 preg函数更快。但是它们并不适用于那种用途,你很可能很遗憾很快就会将它们用于此目的。

如果你用正则表达式解析html,那么你要么完全疯狂,要么就是没有得到html的概念。