2014-06-26 19 views
0

有了這個數組引用鍵 - >值:如何,如果一個關鍵是從正則表達式中的preg_replace在PHP

$arr['id']=150; 
$arr['contenido']="un proyecto"; 
$arr['foto']="una foto"; 

這個作品非常好

$text = 'estamos en el registro {id} cuyo contenido es {contenido} por lo que veremos su {foto}'; 
$text = preg_replace('/{(.*?)}/', '$1', $text); 
echo $text; 

//print: 
//estamos en el registro id cuyo contenido es contenido por lo que veremos su foto 

據我所知,1 $ Y的值由{和}括起來,但我需要用與該鍵匹配的數組的值替換。我想這

$text2 ='estamos en el registro {id} cuyo contenido es {contenido} por lo que veremos su {foto}'; 

$text2 = preg_replace('/{(.*?)}/', $arr['$1'], $text2); 
echo $text2; 

//print 
estamos en el registro cuyo contenido es por lo que veremos su 

但是這{}鍵,的POS機沒有打印anythig怎麼我得到impresed由密鑰y N {}所引用的數組值。

回答

2
preg_replace_callback(
    '/{(.*?)}/', 
    function (array $m) use ($arr) { return $arr[$m[1]]; }, 
    $text2 
) 
+0

它仍然打印 「estamos EN EL registro庫約contenido ES POR老闕veremos蘇」 –

+0

excuseme這項工作很好 –

+0

+1強效而簡明的拉姆達的解決方案:) – zx81

相關問題