В настоящее время у меня есть:
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?
foreach ($variables as $variable => $value) { $string = str_replace('{$' . $variable . '}', $value, $string); }