我有问题。在我的XML文件中有一些名称包含以下内容的值:
&
如何将其替换为正常的“&” ? 我试过这个,但它没有用......
这只是名字,所以如果它是双重ecaped无关紧要......
<product>
<title>Command & 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("&", ' & ', $string);
问候和谢谢!
答案 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("&", ' & ', $string);
return $string;
答案 1 :(得分:0)
此代码没有任何问题
$string= str_replace("&", ' & ', $string);
您确定将xml字符串存储在$ string变量中吗? 你能给我们更多代码吗?
答案 2 :(得分:0)
您向我们展示了包含&
的词汇XML,但您的代码正在处理DOM。 DOM可能是解析词汇XML的结果,而解析器所做的一件事就是用&
替换&
。这不是你自己需要做的事情。
当你将DOM序列化/保存为词汇XML时,当然这个过程是相反的,&
被&
取代。如果序列化程序没有这样做,那么生成的XML就会格式不正确。