更优雅的方法来解析字符串中的内联变量

时间:2011-12-10 23:12:09

标签: php string parsing

目前我有这个:

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 个答案:

答案 0 :(得分:4)

foreach ($variables as $variable => $value) {
    $string = str_replace('{$' . $variable . '}', $value, $string);
}