繁体   English   中英

PHP XML实体编码问题

[英]PHP XML Entity Encoding issue

花了几个小时进行研究之后,我才无法给出答案。 我正在尝试将XML字符串发送给第三方,因此我需要对一些字符进行编码,在这种情况下,必须使用单引号或双引号。 我使用PHP XML Dom实现了此目的,但saveXML()函数始终对似乎没有的引号进行编码。 下面是一个非常简单的示例,当您查看输出时,“ 已被替换为',但其他人仍然有自己的代码。 任何人都可以解释这是为什么以及我如何解决它(无需执行str_replace)。 谢谢。

$XMLDoc = new DOMDocument('1.0', 'utf-8');
$comments = $XMLDoc->createElement('Comments');
    $text = $XMLDoc->createElement('Text', "An apostrophe here < ' > Pound sign: £");
$comments->appendChild($text);
$XMLDoc->appendChild($comments);
echo $XMLDoc->saveXML();

您需要使用createEntityReference函数来使其不受干扰地传递。

例:

$XMLDoc = new DOMDocument('1.0', 'utf-8');
$comments = $XMLDoc->createElement('Comments');

$text1 = $XMLDoc->createTextNode('An apostrophe here < ');
$text2 = $XMLDoc->createEntityReference('apos');
$text3 = $XMLDoc->createTextNode(' > Pound sign: ');
$text4 = $XMLDoc->createEntityReference('pound');

$comments->appendChild($text1);
$comments->appendChild($text2);
$comments->appendChild($text3);
$comments->appendChild($text4);
$XMLDoc->appendChild($comments);
echo $XMLDoc->saveXML();

请注意,默认情况下,某些项目由createTextNode编码。 <和>被编码,井号不被编码。 希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM