我正在寻找在 PHP 中操作 HTML 的好方法。例如,我目前遇到的问题是处理格式错误的 HTML。
我收到的输入看起来像这样:
<div>This is some <b>text
如您所见,HTML 缺少结束标记。我可以使用正则表达式或 XML 解析器来解决这个问题。但是,将来我可能不得不进行其他 DOM 操作。我想知道是否有任何好的 PHP 库可以处理 DOM 操作,类似于 Javascript 处理 DOM 操作的方式。
PHP 有一个 PECL 扩展,可让您访问 HTML Tidy 的功能。Tidy 是一个非常强大的库,它应该能够以智能的方式接收这样的代码并关闭标签。
我用它来清理分类广告系统在导入之前发送给我的格式错误的 XML 和 HTML。
我发现 PHP Simple 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>
对于操纵 DOM,我认为您正在寻找的是this。我曾经从网络上解析 HTML 文档,它对我来说很好用。