XML替换& (PHP)

时间:2017-01-04 14:28:19

标签: php regex xml replace

我有问题。在我的XML文件中有一些名称包含以下内容的值:

&

如何将其替换为正常的“&” ? 我试过这个,但它没有用......

这只是名字,所以如果它是双重ecaped无关紧要......

<product>
    <title>Command &amp; Conquer 3tiberium Wars</title>
    <url>http://www.onlinekeystore.com/command-and-conquer-3-tiberium-wars-cd-key-origin.html</url>
    <priceEUR>7.99</priceEUR>
  </product>

我的代码不工作:

$string= str_replace("&amp;", ' & ', $string);

问候和谢谢!

3 个答案:

答案 0 :(得分:0)

我的代码:

function loadTitles($ tagName,$ path){

$dom = new DOMDocument('1.0', 'utf-8');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->load($path);

$marker = $dom->getElementsByTagName($tagName);

for ($i = $marker->length - 1; $i >= 0; $i--) {
    $word = $marker->item($i)->textContent;
    $escapedWord = escapWord($word);
    $marker->item($i)->textContent = $escapedWord;
}

$dom->saveXML();
$dom->save($path);
}


function escapWord($string){

    $replaceNothing = [":", ",", ";", "`", "#", "'", "´", "–", "!", "(", ")", ".", "@", "’", "+", "™"];
    $replaceSpace = ["-", "–", "_", "/"];
    $delete = ["Steam", "Eu", "Key"];

    $string= str_replace("&amp;", ' & ', $string);

return $string;

答案 1 :(得分:0)

此代码没有任何问题

$string= str_replace("&amp;", ' & ', $string);

您确定将xml字符串存储在$ string变量中吗? 你能给我们更多代码吗?

答案 2 :(得分:0)

您向我们展示了包含&amp;的词汇XML,但您的代码正在处理DOM。 DOM可能是解析词汇XML的结果,而解析器所做的一件事就是用&amp;替换&。这不是你自己需要做的事情。

当你将DOM序列化/保存为词汇XML时,当然这个过程是相反的,&&amp;取代。如果序列化程序没有这样做,那么生成的XML就会格式不正确。