Reemplazar plantillas en cadenas por valores de matriz

Tengo una cadena, eso puede tener plantillas simples. Y tengo una matriz con valores para replacemenet. Actualmente lo estoy haciendo con loop. Pero quiero cambiarlo a preg_replace. ¿Me puedes ayudar?

Ejemplo:

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

También preg_replace debería funcionar no solo con id y nombre, sino con cualquier otra clave. Gracias.

Algo como el siguiente?

  120, 'name' => 'Jim' ); $string = 'Hello . Your ID is '; function foo($val) { return '//'; } echo preg_replace(array_map('foo', array_keys($values)), array_values($values), $string); 

Si todo está en una clase:

 class Template { static function bar($val) { return '//'; } 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 . Your ID is '; $T = new Template(); $T->render($values, $string);