2012-10-11 79 views
-1

所以我有一個模板文件調用的template.php和內部,它會:在php替換文件的內容,並保存到一個新的文件

<html> 
some other content 
<?php $name ?> 
</html> 

從本質上講,我想從數據庫中提取名稱並將其插入$ name並將整個頁面保存爲新文件。

因此,讓在數據庫中說,我有一個叫喬的名字,新的文件創建將有以下內容中:

<html> 
some other content 
Joe 
</html> 

我有是找到正確的功能,實際上唯一的問題替換模板文件中的變量,並能夠將其保存到新文件中。

+1

這通常都不怎麼模板文件的工作,你沒有創建新的HTML文件,則動態填充根據一些標準模板 – 2012-10-11 02:28:30

+0

我只是做這個這樣我就可以爲每個用戶動態生成靜態頁面。我猜這些例子可能會引起誤解。 –

+2

但你通常不會那麼做。它使維護和更新變得更加容易,如果需要更改,您必須編輯每個文件而不是僅編輯一個文件。 – 2012-10-11 02:31:17

回答

1

這不是如何使用模板平時的工作。您應該有一個模板文件,將它們的值替換爲變量,並將其顯示給用戶。您可以緩存這些生成的模板(始終相同的模板),但不會爲每個用戶創建一個新的模板文件並將其永久保存。這使得管理和更新應用程序的方式比您想要的更加困難。

我推薦使用一個簡單的模板系統,如RainTPL。這就是我用於大多數項目的原因......它使用起來非常簡單,並提供了您所需的所有基本功能。

你也可以只用PHP來做這個...有幾個答案可以覆蓋這個,所以我不會深入它。

+0

捕捉系統真的很有意義,像你說的有很多靜態頁面不僅會佔用空間,難以管理。感謝你的回答!平均每天在飛行中產生的交通網站上的 –

+0

確實不應該導致任何負載問題。 – 2012-10-11 02:48:21

1

看看我給this question a while back的答案。在那裏我解釋了「變量解析」通常如何工作。

當我創建模板加載器時,我通常使用output buffering和php include。這允許您在準備好之前以不顯示其內容的方式將該頁面作爲php文件運行。以這種方式「解析」你的php文件的好處是,你仍然可以運行循環和函數。

下面是一個如何使用PHP的輸出緩衝來創建你想要的東西的例子。

模板template.php

<html> 
some other content 
<?php $name ?> 
</html> 

您的數據庫代碼和東西是index.php

<?php 

$name = 'John Doe'; 

if(/* some sort of caching system */) { 
    $parsed_template = file_get_contents('parsed_template.html'); 
}else { 
    ob_start(); 
    include 'template.php'; 
    $parsed_template = ob_get_clean(); 

    file_put_contents('parsed_template.html', $parsed_template); 
} 

echo $parsed_template; 
?> 
相關問題