Более элегантный способ разбора встроенных переменных в строках

В настоящее время у меня есть:

function parse_string($string, $variables){ extract($variables); return eval('return "'. addcslashes($string, '"') .'";'); } 

Поэтому я могу ввести эту строку:

 'Hi {$name}, my name is {$own_name}' 

Вместе с этим массивом:

 array('name' => 'John', 'own_name' => 'Tom') 

И верните это:

 'Hi John, my name is Tom' 

Мне никогда не нравился этот метод eval() но он работает, и он работает быстрее (быстрее, чем регулярное выражение).

Вопрос: Есть ли более элегантный способ сделать это (быстрее, чем использовать регулярное выражение) в PHP5?