Preg_replace特殊字符&

时间:2015-11-08 14:44:32

标签: php regex preg-replace special-characters

下午好,

我的preg_replace出错了。我想将&&仅替换为&,将?&替换为?

我的代码如下所示:

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

你可以帮我解决这个问题吗?我确定,这是一个基本错误,对不起......

谢谢!

2 个答案:

答案 0 :(得分:4)

您无需仅&

逃离?
$reg = preg_replace("#&&#", "&", $reg);

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

答案 1 :(得分:1)

您可以将两个正则表达式简化为一个。

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

输出:

 ?lang=en

由于您没有使用字母字符或.,因此您的修饰符没有意义。

同样&不是特殊的正则表达式字符,只是?。如果在字符类([])中,则不需要替换它。

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