在使用 PHP 的 DOMDocument
的 saveXML()
和 saveHTML()
方法时,我注意到了不同的“转储”行为。这是一个转储版权符号 (©) 的简单示例。<?
$domDoc = new DOMDocument();
$domDoc->loadHTML("©");
echo $domDoc->saveHTML();
echo $domDoc->saveXML();
echo $domDoc->saveXML($domDoc);
?>
三个转储产生三个不同的输出:
第一个输出字符串©
第二个输出字符实体©
第三个输出版权符号的 UTF8 2 字节代码( U+00A9
)
为什么输出不同?有没有办法控制使用哪种方法的可预测性?
最佳答案
我不是 PHP 专家,但对于前两个:
©
是 对于第三个,文档说如果你提供一个节点,那么给定的节点是在没有 XML 声明的情况下编写的(即作为文档片段)。我只能猜测在这种情况下它决定采用 UTF-8 编码。这种行为在文档中并不明显。