首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换.tpl文件中的变量

问替换.tpl文件中的变量
EN

Stack Overflow用户
提问于 2013-11-04 15:44:23
回答 2查看 1.1K关注 0票数 0

目前的情况

我正在使用这个函数:

代码语言:javascript
复制
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.');
    }        
}

基本上,它只是用$tpl->name的数据取代了来自tpl的$tpl->name。

问题是

我希望开始使用{$name},而不是在TPL文件中使用<?php echo $name; ?>。有谁能为我指出用$tpl->name的数据来代替它的正确方向吗?

我试过的

我尝试用regex来完成它,试图找到{和},然后替换它,但是它只将$name输出为文本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-04 16:40:09

我可能会用正则表达式,但这是另一种。您还可以通过$this->vars键预先判断:

代码语言:javascript
复制
$template = file_get_contents($file);
$vars     = explode(',', '{$'.implode('},{$', array_keys($this->vars)).'}');
$output   = str_replace($vars, $this->vars, $template);
票数 0
EN

Stack Overflow用户

发布于 2013-11-04 15:54:22

像这样吗?

代码语言:javascript
复制
preg_replace("/\{(.+)\}/e", "$1", $template);

注意,如php手册上所说的,从5.5开始不推荐使用:http://php.net/manual/en/reference.pcre.pattern.modifiers.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19771404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档