繁体   English   中英

转义特殊字符,不包含<>和PHP引号

[英]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>&#196;&#214;&#220;</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.

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