preg_replace%{Variable} with $ variable

时间:2015-12-15 02:51:35

标签: php preg-replace

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

forexampe:

我有以下字符串:

public Fraction(int n, int d)
{
    //subbed in zeros below so it doesn't give me an error
    numerator = n;
    denominator = d;
}

我想用$ var ==

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

上面的代码不起作用,我收到来自php regex解析器的警告:

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

我试图用反斜杠逃避$替换,但它也没有解决问题。

这个功能有问题吗?

1 个答案:

答案 0 :(得分:1)

错误消息:

  

警告:preg_replace():编译失败:偏移量为8的不匹配括号

是对的。你的正则表达式中有无与伦比的括号。第8个字符为)https://eval.in/485179),但没有(

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

会给你:

RewriteCond $HTTP_HOST== ^www

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

i修饰符在这里也没有意义,因为你的正则表达式中没有字母字符。如果你计划将来再加上那些,你可以补充一下。