我正在使用PHP DOMDocument,有一刻我正在使用createTextNode
$copyrightNode = $doc->createTextNode('©');
$copyrightContainer = $dom_output->createElement('copyright-statement');
$copyrightContainer->appendChild($copyrightNode);
在一段时间后生成的XML中,我得到了:
<copyright-statement>&#x000A9;</copyright-statement>
我的目标是
<copyright-statement>©</copyright-statement>
关于如何做到这一点的任何想法?
提前谢谢。
答案 0 :(得分: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>©</copyright-statement>
答案 1 :(得分:0)
这里要做的正确的事情是使用createEntityReference方法(例如createEntityReference("copy");
),然后appendChild这个实体。
示例:
<?php
$copyrightNode = $doc->createEntityReference("copy");
$copyrightContainer = $dom_output->createElement('copyright-statement');
$copyrightContainer->appendChild($copyrightNode);
创建©
你可以(我相信)做:
$copyrightNode = $doc->createCDATASection("©");
$copyrightContainer = $dom_output->createElement('copyright-statement');
$copyrightContainer->appendChild($copyrightNode);