[英]PHP replace & with & not &
目前,我有:
//replace common characters
$search = array('&', '£', '$');
$replace = array('&', '£', '$');
$html= str_replace($search, $replace, $html);
此代碼的問題在於,如果&已被轉換,它將嘗試再次對其進行轉換。 我如何確保不會發生這種情況?
我將使用PHP必須轉義HTML字符的內置函數:
而不是自己動手,因為它要容易得多。 htmlentities()
和htmlspecialchars()
使用double_encode
參數顯式處理此問題:
當double_encode關閉時,PHP將不對現有的html實體進行編碼。 默認為轉換所有內容。
我舉一個例子,但是如果您有一個像' & '
這樣的例子,它將起作用,然后希望它對您有用:
$str = 'India & Aust & New ';
$regex = '/(\s\&\s)/i';
$replace = ' & ';
if(preg_match($regex, $str)){
$new_str = preg_replace($regex, $replace, $str );
echo '<pre>';
echo htmlspecialchars($new_str, ENT_QUOTES);
echo '</pre>';
}
else{
echo 'Not matched!';
}
但是請記住,如果在“&”號的兩側或您想要的任何地方都留有空間,這將起作用。 否則,請按照@Treffynnon答案進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.