0

我正在使用 PHP DOMDocument,有一次我正在使用 createTextNode

$copyrightNode = $doc->createTextNode('©');
$copyrightContainer = $dom_output->createElement('copyright-statement');

$copyrightContainer->appendChild($copyrightNode);

在一段时间后生成的 XML 中,我得到:

<copyright-statement>&amp;#x000A9;</copyright-statement> 

我的目标是拥有

<copyright-statement>&#x000A9;</copyright-statement> 

关于如何做到这一点的任何想法?

先感谢您。

4

2 回答 2

1

当 PHP 输出 XML 文档时,任何不能以指定的输出编码表示的字符将被替换为数字实体(十进制或十六进制,两者都是等效的):

<?php

$dom = new DOMDocument;

$node = $dom->createElement('copyright-statement', '©');
$dom->appendChild($node);

$dom->encoding = 'UTF-8';
print $dom->saveXML(); // <copyright-statement>©</copyright-statement>

$dom->encoding = 'ASCII';
print $dom->saveXML(); // <copyright-statement>&#169;</copyright-statement>
于 2013-10-15T08:18:25.580 回答
0

这里正确的做法是使用createEntityReference方法(例如createEntityReference("copy");),然后appendChild这个实体。

例子:

<?php 
$copyrightNode = $doc->createEntityReference("copy"); 
$copyrightContainer = $dom_output->createElement('copyright-statement');
$copyrightContainer->appendChild($copyrightNode);

创建&#x000A9;你可以(我相信)做:

$copyrightNode = $doc->createCDATASection("&#x000A9;"); 
$copyrightContainer = $dom_output->createElement('copyright-statement');
$copyrightContainer->appendChild($copyrightNode);
于 2013-10-14T15:43:40.207 回答