2015-11-08 44 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