2012-03-20 12 views
0

私は文字列を持っています。それは単純なテンプレートを持つことができます。私はreplacemenetの値を持つ配列を持っています。現在私はループでそれをやっています。しかし、私はそれをpreg_replaceに変更したい。手伝って頂けますか?文字列のテンプレートを配列の値で置き換えます

例:

$values = array(
    'id' => 120, 
    'name' => 'Jim' 
); 
$string = 'Hello <!name!>. Your ID is <!id!>'; 
$output = preg_replace(...); // Hello Jim. Your ID is 120 

またにpreg_replaceはIDと名前を持つが、他のキーではないだけで動作するはずです。ありがとう。

+0

私はおそらく 'preg_replace_callback'とクロージャを使用します。 –

答えて

2

次のようなものはありますか?

<?php 
$values = array(
    'id' => 120, 
    'name' => 'Jim' 
); 
$string = 'Hello <!name!>. Your ID is <!id!>'; 

function foo($val) { 
     return '/<!' . $val . '!>/'; 
} 

echo preg_replace(array_map('foo', array_keys($values)), array_values($values), $string); 

全体のことは、クラス内にある場合:

class Template { 
     static function bar($val) { 
       return '/<!' . $val . '!>/'; 
     } 

     function render($values, $string) { 
       echo preg_replace(array_map(array('Template', 'bar'), array_keys($values)), array_values($values), $string); 
     } 
} 

$values = array(
    'id' => 120, 
    'name' => 'Jim' 
); 
$string = 'Hello <!name!>. Your ID is <!id!>'; 
$T = new Template(); 
$T->render($values, $string); 
+0

ありがとうございます。良いこと。 array_map()の代わりにclassメソッドを使用できますか? – pltvs

+0

間違いなく編集します –

+0

私の答えを編集:)、助けてくれる –

関連する問題