我有一堆旧的文档,它们看起来像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 的 span)。
是否存在更优雅的解决方案? 有没有方法让 DOMDocument 知道要考虑哪些其他标签作为有效标签? PHP 中是否有不同的强大 HTML 解析类/对象?
(如果不明显的话,我认为在这里正则表达式不是一个有效的解决方案)
更新:伪标签中的信息是目标之一,因此 Tidy 等工具不可行。 另外,我想找到一个能够为我执行某些(如果不是全部)规范性清理的工具,这就是我首先查看 DomDocument 的 loadHTML 方法的原因。