2015-12-15 45 views
0

我想用php变量替换RewriteCondition中的服务器变量。

forexampe:

我有以下字符串:

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

我想是$ var ==

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

上面的代码是不工作来代替%{VAR},我收到来自php正则表达式解析器的警告:

compilation failed, unmatched parentheses at offset at 

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

功能有问题吗?

+1

您是否尝试过配对? –

+0

'preg_replace(“/ \%\ {[^ \}] + \}/i”,“$$ 1 ==”,$ x)' – roullie

回答

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修饰符在这里也没有意义,因为你的正则表达式中没有字母字符。如果你计划在未来有这些,你可以重新加入。