0

此刻的情况

我正在使用这个功能:

public function fetch($file){        
    $file = $this->options['template_dir'].(string)$file;

    if(file_exists($file)){
        ob_start();
        if($this->options['extract']){
            extract($this->vars);
        }
        include $file;
        return ob_get_clean();
    }else{
        throw new Exception('De ('.$file.') template bestaat niet.');
    }        
}

基本上它只是<?php echo $name; ?>从 tpl 替换为$tpl->name.

问题

我想开始使用{$name}而不是<?php echo $name; ?>在我的 TPL 文件中使用。谁能指出我用数据替换它的正确方向$tpl->name

我试过的

我试图用正则表达式来做,试图找到 { 和 } 然后替换它,但它只会输出$name为文本。

4

2 回答 2

0

像这样的东西?

preg_replace("/\{(.+)\}/e", "$1", $template);

请注意,如 php 手册所述,5.5 已弃用:http: //php.net/manual/en/reference.pcre.pattern.modifiers.php

于 2013-11-04T15:54:22.933 回答
0

我可能会使用正则表达式,但这是替代方法。您还可以通过 $this->vars 键进行 foreach:

$template = file_get_contents($file);
$vars     = explode(',', '{$'.implode('},{$', array_keys($this->vars)).'}');
$output   = str_replace($vars, $this->vars, $template);
于 2013-11-04T16:40:09.990 回答