-1

我正在制作一个简单的 PHP 模板系统,但我遇到了一个我无法解决的错误,问题是布局加载非常好,但很多时候,不知道如何解决,这是我的代码

Class Template {

private $var = array();

public function assign($key, $value) {

    $this->vars[$key] = $value;

}

public function render($template_name) {

    $path = $template_name.'.tpl';
    if (file_exists($path)) {

        $content = file_get_contents($path);

        foreach($this->vars as $display) {


            $newcontent = str_replace(array_keys($this->vars, $display), $display, $content);
            echo $newcontent;

        }

    } else {

        exit('<h1>Load error</h1>');

    }
}

}

输出是

标题是:欢迎来到我的模板系统

学分 [学分]

标题是:[标题]

学分致 Alvaritos 学分

如您所见,这是错误的,但不知道如何解决。

4

2 回答 2

2

你最好strtr

$content = file_get_contents($path);
$new = strtr($content, $this->vars);
print $new;

str_replace()是否按照定义键的顺序进行替换。如果你有变量 likearray('a' => 1, 'aa' => 2)和字符串 like aa,你会得到11而不是2. strtr()将在替换之前按长度排序键(最高优先),这样就不会发生。

于 2013-06-24T11:25:24.963 回答
0

Use this:

foreach($this->vars as $key => $value)
    $content = str_replace($key,$value,$content);
echo $content;
于 2013-06-24T11:20:15.810 回答