Более элегантный способ разбора встроенных переменных в строках - PullRequest
1 голос
/ 11 декабря 2011

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

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?

1 Ответ

4 голосов
/ 11 декабря 2011
foreach ($variables as $variable => $value) {
    $string = str_replace('{$' . $variable . '}', $value, $string);
}
...