我正在尝试使用SimpleXMLElement向节点文本发送特殊字符(小于,大于),但它将其转换为转义值。
$header[0] = "%SET(Amt_,<AMT>". $amt . "</AMT>) \n" .$header[0];
以上结果在XML文件中如下:
%SET(Amt_,<AMT>100</AMT>)
我尝试使用html_entity_decode,它仍以同样的方式写入文件。有没有办法将'特殊'字符写入simplexmlelement对象的文本值?
澄清:我想写实际字符'&lt;'和'&gt;'调用$header->asXML()
时的文件。目前,转义版本是写入文件的。
答案 0 :(得分:1)
发送数据时使用htmlspecialchars
,并在需要获取原始字符串时使用htmlspecialchars_decode
。
<?php
$amt = 100;
$header[0] = "Some Value";
$header[0] = "%SET(Amt_,<AMT>". $amt . "</AMT>) \n" .$header[0];
$node = htmlspecialchars($header[0]);
$value = htmlspecialchars_decode($node);
file_put_contents("filename.txt", $value);
echo "written on file";
?>
答案 1 :(得分:0)
解决方案适用于我的情况,我重新打开文件内容,解码并重新保存到文件。
$xml->asXML('test.xml');
$coded = file_get_contents('test.xml');
file_put_contents('test.xml', htmlspecialchars_decode($coded), LOCK_EX);