问题 PHP DOMDocument错误实体'nbsp'未定义


我使用DOMDocument编辑一些HTML文件,但是一些主题在其名称空间中。因此DOMDocument自动将空格更改为%20,然后找不到它们。

这就是如何准确查看错误:

Warning: DOMDocument::load() [domdocument.load]: Entity 'nbsp' not defined in file:///C:/Path/To/The/File/01%20c%2040-1964.html, line: 11 in C:/Path/To/class.php on line 51

你知道如何修复这个错误吗?

提前谢谢你的答案


2412
2018-03-18 16:51


起源

如果没有加载但附加XML数据并收到此错误,则存在一个相关问题: DOMDocument appendXML带有特殊字符 - hakre


答案:


使用 DOMDocument::loadHTMLFile() 代替 load()。这就是它的目的。 HTML不是XML。

XML不知道命名实体  。但是,如果使用loadHTML,XML解析器将加载HTML命名实体,以便错误消失。

另见: XML解析器错误:未定义实体


13
2018-03-18 16:55



我的XML没有正确插入HTML标签。我想用load()加载它,因为它是XML。我该怎么办? - mrarm
如果用户正在使用HTML代码段或不完整的文档,则此方法无效。 - Jay Bienvenu


$textHTML = '<ul> <li>Dentro da ordem jurídica
brasileira.</li> </ul>

像这样保存在XML文件中:

htmlspecialchars($textHTML, ENT_QUOTES);

像这样恢复文件:

$doc->load(file.xml);

-1
2018-04-10 07:42