2011-12-10 100 views
1

內嵌變量更優雅的方式,目前我有這樣的:解析字符串中

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中是否有更優雅的方式來執行此操作(比使用正則表達式更快)?

回答

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

我做了一些基準,你的解決方案竟然比我的解決方案還要快。謝謝。 – thwd