2012-02-20 33 views
0

與動態變量替換我想下面的代碼:中的preg_replace

$t = '12<-- AB_C -->'; 
$AB_C = 'abc'; 
echo preg_replace('/\<-- ([A-Z_]+) --\>/', "$$1", $t); 

我想「12abc」,但它輸出:12 $ AB_C,因此,它不承認更換新動態變量。 是否有任何方式使用preg_replace()中的匹配詞作爲變量或動態變量?

編輯:

對於那些誰尋求解決這個問題,「/ E」標誌,evalates更換,解決了這個問題,並返回我想要的結果,使用:

preg_replace('/\<-- ([A-Z_]+) --\>/e', "$$1", $t); 

回答

1

您能使用preg_replace_callback嗎?

這就像preg_replace,但具有一個回調函數,它的陣列$matches其中$matches[0]是整個比賽,$matches[1]是第一捕獲基等

也許類似(對不起,未測試):

preg_replace_callback(
     '/\<-- ([A-Z_]+) --\>/', 
     create_function(
      '$matches', 
      'return $$matches[1];' // attempt to retrieve value of $AB_C 
     ), 
     $t 
    );