2010-06-17 46 views
0

需要幫助。我無法替換'&'和'&',它們在PHP中使用Preg_replace。但是,如果我在xml文件上手動(編輯)它,它工作得很好。XML中無法替換&&使用PHP中的Preg_replace

下面是該示例:

$XMLCharactersPreg = "/[&<>\"\'()^*@+]/"; 
$XMLPregReplace = "&amp;"; 
$d_Description = "50% offer & 20% further reduction for member"; 

if (preg_match($XMLCharactersPreg, $d_Description)) { 
    echo "A match was found."; 
    $XMLDealDescription = preg_replace($XMLCharactersPreg , $XMLPregReplace, $d_Description); 
    echo "$XMLDealDescription <br/>"; 

} else { 
    echo "A match was not found."; 
} 

感謝。

+1

你的代碼適合我。 – 2010-06-17 07:03:34

+0

你看過htmlentities()嗎? – Sjoerd 2010-06-17 07:06:10

回答

0

爲什麼不使用htmlspecialchars

$XMLDealDescription = htmlspecialchars($d_Description, ENT_QUOTES); 

然後,代碼變爲:

$d_Description = "50% offer & 20% further reduction for member"; 

$XMLDealDescription = htmlspecialchars($d_Description, ENT_QUOTES); 
echo "$XMLDealDescription <br/>"; 

此代碼工作正常 - 輸出是:你獲得

> g:\Program Files\PHP>php Test\test.php.txt 
50% offer &amp; 20% further reduction for member <br/> 

任何其他錯誤(如XML良構)可能由於代碼中的其他地方出現錯誤。 (另外,< br />標籤似乎在/和>之間沒有空格)。

+0

嗨David_001, 已嘗試過您發佈的代碼,但它沒有奏效。我在這裏錯過了什麼嗎? XML解析錯誤:格式不正確 – Raind 2010-06-17 07:29:22

0

您是否正在看瀏覽器的結果,它將顯示&amp;&?所以源代碼包含&amp;,但在瀏覽器中只能看到&

+0

Hi Sjoerd, 它在瀏覽器上顯示'&'而不是'&'。我查看了XML文件,它並未將'&'替換爲'&',並且也收到了XML解析錯誤。 期待儘快收到你的來信。 謝謝 – Raind 2010-06-17 07:24:55

+0

您的示例代碼適用於我,因此尚不清楚它爲什麼不適合您。 – Sjoerd 2010-06-17 07:28:47

+0

這是我在瀏覽器上根據上面的代碼運行時收到的。 找到一個匹配成員.50%的報價和成員的進一步減少20% 正如你所看到的,'&'仍然存在?那是對的嗎?它不應該被'&'取代嗎? – Raind 2010-06-17 07:32:20