2015-12-15 44 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修飾符在這裏也沒有意義,因爲你的正則表達式中沒有字母字符。如果你計劃在未來有這些,你可以重新加入。