2011-04-19 92 views
0

不知道是否有一個方便的preg_replace或相似的功能,這將改變我所有的&&,但不會改變&&(不會改變&這已經是以適當的格式)。預浸更換,嚴格的XHTML,PHP和符號錯誤

我有問題顯示的頁面有(用戶提交)&,我想在頁面顯示之前更改它們(從一個從mysql獲取的文本塊)。

幫助將不勝感激。 乾杯。

PS:我想用用&兩邊有空間str_replace函數的,但後來我停下來代替Bob & Jenny想着像Bob &Jenny錯別字(因爲用戶提交的)。

+0

這聽起來像你是雙/部分編碼它。你應該弄清楚爲什麼你將編碼和未編碼的數據放在一起並解決這個問題。 – 2011-04-19 20:03:26

+0

我沒有編碼任何@Drackir,只是在xhtml嚴格中,用戶提交了一個類似'Bob&Jenny'的句子將阻止頁面的顯示。 – 2011-04-19 20:06:47

+0

你從哪裏得到額外的'&'?用戶是否提交了他們?如果你還沒有編碼它,爲什麼你的數據已經有'&'了呢? – 2011-04-19 20:09:02

回答

1

您可以使用?!斷言爲:

$html = preg_replace('/&(?!#?\w+;)/', "&", $html); 
       # or just (?!amp;) 

這也跳過現有&放大器;和其他& lt;或{實體。但這當然不是完美的。