我有一堆类似HTML的遗留文档.就像在,它们看起来像HTML,但有其他组成的标签,不是HTML的一部分
This is an example of afake tag
我需要解析这些文件.PHP是唯一可用的工具.这些文档并不接近于格式良好的XML.
我最初的想法是在PHP DOMDocument上使用loadHTML方法.但是,这些方法会阻塞化妆HTML标记,并拒绝解析字符串/文件.
$oDom = new DomDocument(); $oDom->loadHTML("This is an example of afake tag "); //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方法.
您可以libxml_use_internal_errors
在加载文档时禁止显示警告.例如.:
libxml_use_internal_errors(true); $doc = new DomDocument(); $doc->loadHTML("This is an example of afake tag "); libxml_use_internal_errors(false);
如果出于某种原因需要访问警告,请使用 libxml_get_errors