2015-11-08 43 views
1

大家下午好,Preg_replace特殊字符&

我在我的preg_replace中有一個錯誤。我想將&&替換爲&?&以及?

我的代碼如下所示:

$reg = preg_replace("#\&\&#is", "& 
     ", $reg);  
$reg = preg_replace("#\?\&#is", "? 
     ", $reg); 

能否請你幫我解決這個問題?我相信,它有一些基本的錯誤,所以對不起...

謝謝!

+0

爲什麼換行符中的換行符?你確定它是''發送的,而不是'&'? – knittl

+0

@knittl我相信這是「&」。那麼,它不應該是換行符,我只是不知道,如何使這項工作... –

+0

你想只取代2'&'s或所有'&'s> = 2? – chris85

回答

3

你不需要逃避&只有?

$reg = preg_replace("#&&#", "&", $reg); 

$reg = preg_replace("#\?&#", "?", $reg); 
+0

它不適合我... original'$ reg'包含「?(space)&」所以我嘗試了'$ reg = preg_replace(「#\?&# 「,」?「,$ reg);'但是當我嘗試'echo'$ reg';'沒有任何變化...... –

+0

@HSturma然後你需要添加空間到正則表達式...''$ reg = preg_replace (「#\?\ s&#」,「?」,$ reg);'''\ s'用於空格 – jmattheis

+0

但仍然沒有任何內容..我真的不知道,爲什麼它不起作用... Here是正確的原始reg包含:「?&lang = en」 –

1

您可以在兩個regexs簡化成一個。

echo preg_replace("#([?&])\s*&#", "$1", ' ? &lang=en'); 

輸出:既然你不使用字母字符或.

?lang=en 

你修飾符沒有意義。

另外&不是一個特殊的正則表達式字符,只是?。如果在字符類([])中不需要被替換。

Regex101演示:https://regex101.com/r/iS4mQ0/1