PHP Dom文档HTML更快还是preg_match_all函数更快?

4

我有一个疑问,哪个处理速度更快?dom文档还是preg_match_all与curl函数在解析html页面时更快?dom文档函数会像curl函数一样在其他服务器上留下痕迹吗?例如,在curl函数中,我们使用用户代理来定义访问者,但在dom文档中没有。


1
你们知道编程有多难。以下是一个使用示例。 - zzzzBov
你想从获取的文档中获得什么? - dqhendricks
3个回答

6

如果其中一个提供了错误的结果,那么速度更快的那个是否重要呢?

使用正则表达式从文档中获取单个数据位将比解析整个HTML文档更快。但是,在某些情况下,正则表达式无法正确解析HTML。

请参见http://htmlparsing.com/regexes.html,我已经开始回答这个常见问题。(对于你们其他人,我需要帮助。源代码在Github上,我需要许多不同语言的示例。)


2
正则表达式可能更快,但它们也很可能是更糟糕的选择。除非您已经对应用程序进行了基准测试和分析,并且没有找到其他需要优化的地方,否则您应该考虑使用适当的现有解析器。
虽然可以使用正则表达式来匹配HTML,但是要想得到可靠的解析器需要付出大量的努力。PHP提供了许多本地扩展来可靠地处理XML(和HTML)。还有一些第三方库。请参见我的回答:
- 最佳解析HTML的方法
关于发送自定义用户代理,这也可以通过DOM实现。您需要创建一个自定义流上下文,并将其与底层的libxml函数相关联。您可以以这种方式提供任何可用的HTTP流上下文选项。请参见我的答案,了解如何提供自定义UserAgent的示例:


1

DOM函数与HTML获取无关。

但是,有一些加载函数可以直接用于获取HTTP资源。

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

至于您问题的另一部分。preg函数更快。但是它们不是为此目的而设计的,您很快就会后悔使用它们。

如果您正在使用正则表达式解析HTML,则要么完全疯狂,要么只是不理解HTML的概念。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接