【问题标题】:DOM manipulation in PHPPHP中的DOM操作
【发布时间】:2010-09-06 20:00:40
【问题描述】:

我正在寻找在 PHP 中处理 HTML 的好方法。例如,我目前遇到的问题是处理格式错误的 HTML。

我收到的输入看起来像这样:

<div>This is some <b>text

如您所见,HTML 缺少结束标记。我可以使用正则表达式或 XML 解析器来解决这个问题。但是,将来我可能不得不进行其他 DOM 操作。我想知道是否有任何好的 PHP 库可以处理 DOM 操作,类似于 Javascript 处理 DOM 操作的方式。

【问题讨论】:

  • 我会先通过 HTML Purifier 运行格式错误的 HTML,然后再对其进行任何操作。

标签: php html dom


【解决方案1】:

PHP 有a PECL extension that gives you access to the features of HTML Tidy。 Tidy 是一个非常强大的库,它应该能够以智能的方式接收类似的代码并关闭标签。

我用它来清理分类广告系统在导入之前发送给我的格式错误的 XML 和 HTML。

【讨论】:

    【解决方案2】:

    对于操作 DOM,我认为您正在寻找的是 this。我曾经从网络上解析 HTML 文档,对我来说效果很好。

    【讨论】:

      【解决方案3】:

      我发现 PHP Simple HTML DOM 是迄今为止最有用和最直接的库。我会说比 PECL 更好。

      我在how to use it to scrape myspace artist tour dates 上写过一篇文章(只是一个例子。)这是php simple html dom parser. 的链接

      【讨论】:

        【解决方案4】:

        现在内置的 DOM 库可以轻松解决这个问题。 loadHTML 方法将接受格式错误的 XML,而 load 方法则不会。

        $d = new DOMDocument;
        $d->loadHTML('<div>This is some <b>text');
        $d->saveHTML();
        

        输出将是:

        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
        <html>
          <body>
            <div>This is some <b>text</b></div>
          </body>
        </html>
        

        【讨论】:

        • 我输入了一个类似的答案,其中包含更多关于字符串编码以及如何提取文档片段here
        猜你喜欢
        • 2011-11-04
        • 2011-09-12
        • 2017-02-21
        • 2010-10-24
        • 1970-01-01
        • 2015-12-28
        • 2018-12-13
        • 2015-06-14
        • 2020-05-20
        相关资源
        最近更新 更多