gpt4 book ai didi

php - 带有特殊字符的 DOMDocument appendXML

转载 作者:行者123 更新时间:2023-11-28 04:08:27 25 4
gpt4 key购买 nike

我正在从我的数据库中检索一些 html 字符串,我想将这些字符串解析到我的 DOMDocument 中。问题是,DOMDocument 在特殊字符处发出警告。

Warning: DOMDocumentFragment::appendXML() [domdocumentfragment.appendxml]: Entity: line 2: parser error : Entity 'nbsp' not defined in page.php on line 189

我想知道为什么,我想知道如何解决这个问题。这是我页面的一些代码片段。我该如何修复这些警告?

$doc = new DOMDocument();

// .. create some elements first, like some divs and a h1 ..

while($row = mysql_fetch_array($result))
{
$messageEl = $doc->createDocumentFragment();
$messageEl->appendXML($row['message']); // gives it's warnings here!

$otherElement->appendChild($messageEl);
}

echo $doc->saveHTML();

我还发现了一些关于验证的信息,但是当我应用它时,我的页面将不再加载。我为此尝试的代码是这样的。

$implementation = new DOMImplementation();
$dtd = $implementation->createDocumentType('html','-//W3C//DTD XHTML 1.0 Transitional//EN','http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd');

$doc = $implementation->createDocument('','',$dtd);
$doc->validateOnParse = true;
$doc->formatOutput = true;

// in the same whileloop, I used the following:
$messageEl = $doc->createDocumentFragment();
$doc->validate(); // which stopped my code, but error- and warningless.
$messageEl->appendXml($row['message']);

提前致谢!

最佳答案

XML 中没有 。唯一定义了实际名称(而不是使用数字引用)的字符实体是&<> ;

这意味着您必须使用不间断空格的等效数字,即   或(十六进制) 

如果您尝试将 HTML 保存到 XML 容器中,请将其另存为文本。 HTML 和 XML 可能看起来很相似,但它们却截然不同。 appendXML() 需要格式正确的 XML 作为参数。请改用 nodeValue 属性,它会在没有任何警告的情况下对您的 HTML 字符串进行 XML 编码。

// document fragment is completely unnecessary
$otherElement->nodeValue = $row['message'];

关于php - 带有特殊字符的 DOMDocument appendXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com