【发布时间】:2010-09-09 03:58:36
【问题描述】:
我有一堆类似 HTML 的遗留文档。例如,它们看起来像 HTML,但有额外的不属于 HTML 的组成标签
<strong>This is an example of a <pseud-template>fake tag</pseud-template></strong>
我需要解析这些文件。 PHP 是唯一可用的工具。这些文档并不接近于格式良好的 XML。
我最初的想法是在 PHP DOMDocument 上使用 loadHTML 方法。但是,这些方法会阻塞 HTML 标签,并且会拒绝解析字符串/文件。
$oDom = new DomDocument();
$oDom->loadHTML("<strong>This is an example of a <pseud-template>fake tag</pseud-template></strong>");
//gives us
DOMDocument::loadHTML() [function.loadHTML]: Tag pseud-template invalid in Entity, line: 1 occured in ....
我能想到的唯一解决方案是使用字符串替换函数对文件进行预处理,该函数将删除无效标签并用有效的 HTML 标签替换它们(可能是带有标签 id 的跨度名称)。
有没有更优雅的解决方案?一种让 DOMDocument 知道其他标签被认为是有效的方法?是否有针对 PHP 的不同的、强大的 HTML 解析类/对象?
(如果不是很明显,我不认为正则表达式是一个有效的解决方案)
更新:虚假标签中的信息是这里目标的一部分,因此不能选择 Tidy。另外,我正在寻找可以为我完成某种程度(如果不是全部)格式良好的清理工作,这就是我首先查看 DomDocument 的 loadHTML 方法的原因。
【问题讨论】: