修改CDATA字符串并以CDATA格式再次插入?

时间:2017-02-25 17:57:10

标签: php xml dom simplexml

实际我有一个问题。我想在XML文件中附加一些CDATA格式的字符串。

<url><![CDATA[http://www.kinguin.net/category/1356/l-a-noire-steam-key/?nosalesbooster=1&country_store=1&currency=EUR]]</url>

使用以下代码修改字符串后:

$doc = simplexml_import_dom($dom);
    $items = $doc->xpath('//url');
    foreach ($items as $item) {
        $node = dom_import_simplexml($item);
        $node->textContent .= 'appendIT';
    }

我明白了:

<url>http://www.kinguin.net/category/1356/l-a-noire-steam-key/?nosalesbooster=1&amp;country_store=1&amp;currency=EURappendIT]]</url>

但我怎么能说&#34;把它放回CDATA格式&#34;?

另外。我想将此网址发送到我的数据库。但没有&amp;字符。那么如何在没有&amp;的情况下获取网址?

问候,谢谢!

1 个答案:

答案 0 :(得分:0)

由于XML中的CDATA代表&#34;字符数据&#34;,您可以将其视为字符串而不进行解析。 CDATA以]]结尾(假设不是嵌套的CDATA),所以

$xmlstrIn = '<url><![CDATA[http://www.kinguin.net/category/1356/l-a-noire-steam-key/?nosalesbooster=1&country_store=1&currency=EUR]]</url>';
$xmlstrOut = preg_replace('|(\]\])|', 'appendIT$1', $xmlstrIn);

并将$xmlstrOut发送到您的数据库。

希望这可以解决问题(除非您正在研究SimpleXML扩展或其他东西)。

此致

尼克