簡體   English   中英

PHP將&替換為&not&

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM