2013-03-29 32 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的是因爲我想創建自己的簡單的模板語法分析器在未來的項目中使用 –