2014-07-23 49 views
0

我製作了一個模板引擎,它使用file_get_contents()來獲取頁面的內容,然後用它的值替換它找到的任何鍵。file_get_contents不執行

這不是一個問題,但什麼是一個問題是,它使頁面新的輸出,所以它是這樣的

$output = str_replace($key, $replace, $output); return $output; 

唯一的問題是,在新的輸出,PHP代碼顯示在源代碼中,但未運行。有沒有什麼辦法解決這一問題?

+0

嘗試使用[EVAL(http://php.net/manual/en/function.eval.php) –

+0

我KNW這不是答案,但是,如果你試圖做一個模板引擎...使用像https://github.com/bobthecow/mustache.php模板引擎:) –

+0

我試圖讓我自己,因爲它是一個對我來說有輕微的挑戰,但模板引擎部分不是我猜測的全部問題。 – user3867184

回答

2

一旦你使用你的代碼file_get_contents()

$code = file_get_contents("page.php"); 

你做,你需要在變量$code這是一個字符串,那麼如果代碼以你這樣做

eval($code); 

做的工作html代碼,它有一些php代碼裏面,試試這個

eval(" ?> " . $code . " <?php "); 

我必須告訴你,這不是一個好的解決方案,eval是在php上使用最危險的函數。

+0

感謝您使用eval後,我得到這個錯誤「解析錯誤:語法錯誤,意外'<'在C:\ xampp \ htdocs \ hk \ cores \ core.template_engine.php(62):eval()'d代碼在第1行「 – user3867184

+0

這意味着你作爲'eval'函數參數傳遞的代碼是不正確的 – Khalid

+0

我不是說在這裏聽起來像一個完整的'noob',但我不確定如何做到這一點,我從來沒有使用eval,所以我不知道如何使用它,我真的從來沒有找到一個用戶。 – user3867184

2

您可以使用PHP eval功能來運行一個字符串作爲PHP代碼

$output = str_replace($key, $replace, $output); return $output; 
eval($output);