如何将$ 1放入带有preg_replace的数组中?

时间:2011-11-07 00:29:12

标签: php preg-replace

基本上我试图通过在HTML文件中找到任何类似{$variable}的内容来解析我的模板preg_replace。

public function parse_file($file) {

    return preg_replace('/{\$(.+?)}/i', "$this->params[$1]", $this->get_file($file));

}

但是,这将返回Array(variable),而不是variable数组中设置的$this->params

我希望它返回$this->params['variable']

为了澄清,这就是我的HTML文件的样子。

<!DOCTYPE html>
<html>
    <head>
        <title>{$variable}</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div>TODO write content</div>
    </body>
</html>

1 个答案:

答案 0 :(得分:3)

请尝试preg_replace_callback(),例如(PHP 5.3)

// using $this in an anonymous function is not very well defined
$params = $this->params;

return preg_replace_callback($pattern, function (array $matches) use ($params) {
    return $params[$matches[1]];
}, $this->get_file($file));