[英]Escape Special Characters without <> and quotes with PHP
我有一个XML / SVG。 一部分:
<text id="p6_segmentMainLabel5-outer" class="p6_segmentMainLabel-outer" style="font-size: 11px; font-family: arial; fill: rgb(170, 170, 170);">BüG [349]</text>
里面有一个特殊字符。 如何在不将所有“ <”和“>”都转义为<和>的情况下清除此类特殊字符的整个XML? 我可以将要转换的所有字符组成一个数组,但我希望仅排除<>和Quotes的方法具有干净的XML。
编码变音符号并不能使您的XML变得“干净”,但使阅读变得更加困难。
此处不需要编码变音符号和不属于ASCII的其他字符-除非要创建ASCII XML。 这不是经常需要的。
使用UTF-8作为XML的编码,您将有99%的时间没有问题。
如果需要ASCII,请在XML-API上指定编码(默认为UTF-8):
$dom = new DOMDocument('1.0', 'ASCII');
$dom
->appendChild($dom->createElement('text'))
->appendChild($dom->createTextNode('ÄÖÜ'));
echo $dom->saveXml();
输出:
<?xml version="1.0" encoding="ASCII"?>
<text>ÄÖÜ</text>
可以将XML加载到DOM中,并将所有节点复制到定义为使用ASCII的新DOM中:
$source = new DOMDocument();
$source->loadXml(
'<?xml version="1.0" encoding="utf-8" ?><text>ÄÖÜ</text>'
);
$target = new DOMDocument('1.0', 'ASCII');
$target->appendChild(
$target->importNode(
$source->documentElement, TRUE
)
);
echo $target->saveXml();
如果将XML生成为文本,则可以使用htmlentities()
函数转换字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.