2011-11-23 113 views
1

我有一個寫入XML文件的系統。在添加PHP之前編輯字符串在添加之前

的問題是,我不能在XML文件中有這樣的符號&

我需要更換這個符號無論它是在代碼中查找與&

問題是我有一個字符串的LOT ,我不想應用一個函數來替換每個單獨字符串的符號。

這是一個例子:

$stringData ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 
$stringData .="<ingrooves_import xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://schemas.ingrooves.com/INgrooves/INgroovesImport_1_0.xsd\" schema_version=\"1\" schema_revision=\"0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.ingrooves.com/INgrooves/INgroovesImport_1_0.xsd\">\n"; 
$stringData .= "<album>\n"; 
$stringData .= "<title>".$albumTitle."</title>\n"; 
$stringData .= "<label_reference>LA0001</label_reference>\n"; 
$stringData .= "<performer>".$MainArtist."</performer>\n"; 
$stringData .= "<catalog_number>".$CatalogueNumber."</catalog_number>\n"; 
$stringData .= "<upc>".$UPC_EAN_JAN."</upc>\n"; 
$stringData .= "<release_date>".$releaseDate."</release_date>\n"; 
$stringData .= "<copyright>".$DigiDistYear."</copyright>\n"; 

而且我有更多的$ StringData是在我的代碼。所以你可以理解我不想申請每一個$ stringData代碼來代替那個符號。

我想找到一種方法來告訴的代碼,對任何$ StringData是可變的,而對於任何內容,此$ StringData是會遇到,那麼它必須與&amp;

更換&是否有這樣做的一種方式它?

在幾句話,代碼應該這樣做:

爲您準備的變量$ StringData是裏面遇到,從現在開始每個內容,你應該改變&&amp;每次遇到這個符號。

請幫幫我!

感謝

回答

2

在腳本的最後,當你完成添加代碼字符串,添加以下內容:

$stringData = str_replace ('&','&amp;',$stringData); 

您可以用正則表達式也這樣做,但這樣會藏漢工作: - )

+0

最後?不在頂部?如果我把它放在底部,它不會寫錯嗎?在寫任何東西之前不應該遵循這個規則嗎? –

+0

不,因爲這個搜索每一個&後都執行,所以你需要在字符串中實際有&符號才能工作。你必須在你要輸出到文件或回聲之前使用它,或者其他什麼。 –

+0

謝謝。它不需要額外的$ stringData。=而不是$ stringData =?謝謝 –

2

這可能太過牽強......但在構建XML輸出後簡單使用str_replace怎麼辦?

$stringData = str_replace('&','&amp;',$stringData); 

注:

這將取代甚至已經存在&amp;&amp;amp;,所以一定要確保你不已經在使用此代碼之前有一些&amp;在您的字符串。

0

利用這一點,它應該很好地工作:

$stringData = str_replace('&','&amp;',$stringData);

0

我不知道如果我理解正確你的問題。

基本上,在任務結束時,你&

$myString = "this is a test & you &&& can & see"; 
$newString = str_replace('&', '&amp', $myString); 
echo $newString; 

取代&內StringData是所有出現在新的變量,你可以看到,所有&與&

現在條代替您無法在瀏覽器中看到結果,因爲瀏覽器將顯示全部&爲&

您需要查看代碼或在終端中測試代碼。