preg_replace %{Variable} 与 $variable

preg_replace %{Variable} with $variable

我正在尝试用 php 变量替换 RewriteCondition 中的服务器变量。

例如:

我有以下字符串:

$x="RewriteCond %{HTTP_HOST} ^www";

我想用 $var==

替换 %{VAR}
 $x="RewriteCond %{HTTP_HOST} ^www";
preg_replace("/%\{[^}]+)\}/i","$==",$x);

上面的代码不起作用,我从 php 正则表达式解析器收到警告:

compilation failed, unmatched parentheses at offset at

我尝试用反斜杠将替换中的 $ 转义,但也没有解决问题。

功能有问题吗?

错误信息:

Warning: preg_replace(): Compilation failed: unmatched parentheses at offset 8

是正确的。您的正则表达式中有不匹配的括号。第8个字符是)https://eval.in/485179)但是没有(.

这个

$x="RewriteCond %{HTTP_HOST} ^www";
echo preg_replace("/%\{([^}]+)\}/","$==",$x);

会给你:

RewriteCond $HTTP_HOST== ^www

这是一个 regex101 演示:https://regex101.com/r/yB0yQ5/2; and a PHP demo, https://eval.in/485180

i 修饰符在这里也没有意义,因为您的正则表达式中没有字母字符。如果您打算将来拥有这些,您可以将其添加回来。