PHP中的DOM操作

时间:2020-03-05 18:43:06  来源:igfitidea点击:

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

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

<div>This is some <b>text

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

解决方案

回答

PHP具有PECL扩展名,可让我们访问HTML Tidy的功能。 Tidy是一个非常强大的库,应该能够接收这样的代码并以一种智能的方式关闭标签。

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

回答

对于操纵DOM,我认为我们正在寻找的是这个。我曾经解析过Web上的HTML文档,它对我来说很好用。

回答

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

我已经写了一篇文章,介绍了如何使用它来刮擦myspace艺术家的巡回演出(只是一个例子。)这是php简单的html dom解析器的链接。

回答

现在内置的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>