首页 > 解决方案 > php DOMDocument 允许输入 HTML 中的空属性?

问题描述

我正在尝试构建一些东西来解析自定义 HTML,类似于您可以在 Vue.js 或 React 中执行的操作。在那里你可以使用空属性,但 phps \DOMDocument 给我这样的标记错误:

<div><div foo></div></div>

PHP 警告:DOMDocument::loadXML():规范要求实体中属性 foo 的值,行:11

只需这样做即可重现问题:

$document = new \DOMDocument();
$document->loadXML($html);

我已经阅读了https://www.php.net/manual/en/domdocument.loadxml.phphttps://www.php.net/manual/en/libxml.constants.php并尝试过LIBXML_NOWARNING,但警告仍然存在不管什么原因出现。然后我试过LIBXML_NOERROR了,但这根本没有输出。

我不是$document->loadHTML($html);故意使用的,因为如果与未知标签一起使用,您最终会收到以下警告:

PHP 警告:DOMDocument::loadHTML():在实体中标记 mytag 无效。

我知道我可以抑制此警告,但我宁愿根本不抑制警告。可能还有其他警告,我认为抑制警告的编码风格不是很好,它们不应该发生,因为可能会有副作用。如果不介意切换到 loadHTML() 如果有另一种方法可以防止此警告。

那么有什么方法可以处理在使用 \DOMHtml 的标记中根本没有定义值的空值属性?

标签: phpattributesdomdocument

解决方案


php 的 DOMDocument 类中的标准构建不支持 HTML5 表示法。

我只是对以下库进行了快速尝试,它会在没有警告的情况下导入和导出您的代码段:

HTML5DOM文档


推荐阅读