【发布时间】:2012-08-10 14:41:39
【问题描述】:
我想使用 PHP DOM 实现来操作 HTML 和 XHTML 文档。我使用 DOMDocument->loadHTML() 方法来加载内容。
想知道加载的内容是 XHTML 还是 HTML。 DOMDocument 有一个 doctype 对象,其中包含来自文档本身的 DOCTYPE 声明。到目前为止,我考虑过比较 $dom->doctype->publicId ,其中包含诸如“-//W3C//DTD HTML 4.01//ENtext/html”之类的字符串
有没有人能想到的更好的方法?
编辑:
对不起,如果我的问题有点不清楚。我更新了这个问题,因为它可能令人困惑。但现在要说清楚:这个问题不是关于使用 PHP DOM 处理 HTML,也不是关于 XHTML 是好是坏。
【问题讨论】:
-
为什么不直接修复源文档而不是产生额外的服务器开销?
-
修复是什么意思?我从来没有说过他们坏了。源文档是用户提供的所有内容。所以可能有一个有效的 DOCTYPE 声明。它也可能丢失。我实际上只是好奇是否有人知道另一种或更好的方式来判断它是 XHTML 还是 HTML,而不是使用 DOMDocument->doctype。
-
很确定你加载为html,你应该保存为html。它应该维护原始文档类型声明。您可以使用 DOM validate 方法根据文档类型声明来确定文档是否有效。如果代码无效,您应该让用户修复代码。
-
dqhendricks,您的评论根本没有帮助。 “很确定它作为 html 加载,你应该保存为 html”通常听起来是正确的,但在 PHP DOM 的情况下则不然。如果要处理无效标记,则必须使用 loadHTML() 方法。我什至没有询问验证。如果代码无效完全超出范围,用户是否必须修复他的代码。这个决定是业务需求,而不是技术需求。