我有一堆类似HTML的遗留文档。如在HTML中,他们看起来像HTML,但有额外的组成标签,不是HTML的一部分在PHP中容错HTML/XML/SGML解析
<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知道其他标签被视为有效的方法?有没有一个不同的,健壮的HTML解析类/对象用于PHP?
(如果不是很明显,我不认为正则表达式这里有效的解决方案)
更新:在假标签的信息是目标的一部分在这里,所以像整齐不一个选项。另外,我在为某些层次(如果不是全部的话)进行了格式清理,这就是为什么我首先查找DomDocument的loadHTML方法的原因。
道歉,我本来应该更具体,什么我需要分析出该文件的部分是什么在假标签中找到。 – 2008-09-15 21:07:03
我建议HTMLTidy作为一个预处理步骤,试图让你形成良好的XML,然后你可以用DomDocument解析它,并读取整个DOM,并带有任何好运:) – 2008-09-15 21:27:15
不会整理去掉伪造标记以及所有格式化它呢? – 2008-09-17 02:12:08