【问题标题】:Efficient way to parse html in PHP? [duplicate]在 PHP 中解析 html 的有效方法? [复制]
【发布时间】:2016-01-12 07:30:49
【问题描述】:

当我解析 html 时,我总是采用最直观的方法,即 preg_match 页面源。我知道有些解析器可以使用更经济的代码完成工作,例如 PHP Simple HTML DOM Parser ,但是当我只需要源代码中的少量值时,我不确定解析器是否比 preg_match 更快。

那么,是使用解析器更快还是只是为了让代码看起来更好?假设我们没有为 preg_match 使用低效的正则表达式。

【问题讨论】:

  • 不要使用正则表达式来解析 HTML...阅读:stackoverflow.com/questions/1732348/…
  • 解析器速度较慢,但​​更可靠。这并不是让代码看起来很漂亮。如果 HTML 文件最终违反了您在构建正则表达式时所进行的假设,那么它不会得到错误的结果。
  • 使用正则表达式在性能方面非常昂贵。与性能相比,正确的解析器不仅更好,而且它们还倾向于使其更易于阅读和(隐式)维护。
  • 我一般不推荐这个解析器。代码库很糟糕,解析器本身相当慢且内存不足。任何基于 libxml 的库都应该轻松胜过这一点。
  • 您可以使用奇妙的Symfony DomCrawler + CssSelector 组件。如果您习惯使用 jQuery 选择器,那么您会对 CSS 组件感到宾至如归。

标签: php html regex parsing


【解决方案1】:

使用正则表达式解析 HTML/XML 通常不是一个好主意。正则表达式无法处理许多特殊情况 - 标记分为几行、& 实体、CDATA 等等。

真正的解析器(DOMSAX,如果文本实际上是 xml)非常快,可靠性无与伦比。

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 2011-02-11
    • 2014-04-15
    • 1970-01-01
    相关资源
    最近更新 更多