Preg_replace 特殊字符 &

Preg_replace special characters &

下午好,

我的 preg_replace 有错误。我想用 & 替换 &&,用 ?.

替换 ?&

我的代码如下所示:

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

你能帮我解决这个问题吗?我敢肯定,这是一些基本错误,对此深感抱歉...

谢谢!

你不需要转义 & 只需要 ?

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

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

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

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

输出:

 ?lang=en

您的修饰符没有意义,因为您没有使用字母字符或 .

此外 & 不是特殊的正则表达式字符,只是 ?。如果在字符 class ([]) 中,两者都不需要替换。

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