2013-03-29 59 views
0

这一个执行PHP是有点怪异之一。我创建了一个函数,用来选择一个模板,并包含它或解析%0,%1,%3等变量。这是目前的功能:PHP - 从字符串

if(!fopen($tf,"r")){ 
    $this->template("error",array("404")); 
} 
$th = fopen($tf,"r"); 
$t = fread($th, filesize($tf)); 
$i=0; 
for($i;$i<count($params);$i++){ 
    $i2 = '%' . $i; 
    $t = str_replace($i2,$params[$i],$t); 
} 
echo $t . "\n"; 
fclose($th); 

其中$ th是我的模板文件的相对目录。我的问题是,我需要在这些文件中执行PHP,同时可以替换字符串变量%0%1等。 我该如何去尝试这些?

+0

如果你不能找到另一个解决方案,那么'eval()'将在你的模板中执行你的PHP代码。这是最终的解决方案!即使这样,如果你使用它,你也会遇到麻烦。 http://www.php.net/manual/en/function.eval.php –

+0

为什么不使用现成的模板引擎之一? – Cfreak

回答

0

就像我在我的评论说,我觉得像Smarty的模板引擎可能会为您提供更好,但这里是我如何与输出缓冲做到这一点,而不是eval()

像这样的事情

ob_start(); 
include "your_template_file.php"; 
$contents = ob_get_contents(); // will contain the output of the PHP in the file 
ob_end_clean(); 

// process your str_replace() variables out of $contents 
+0

谢谢:) 其原因我不想使用Smarty的是因为我想创建自己的简单的模板语法分析器在未来的项目中使用 –