基於PHP產生靜態頁的實現方法_PHP教程

來源:互聯網
上載者:User
t1.php
複製代碼 代碼如下:
// 方法一根據模版產生靜態頁面
// replaceTemplateString函數用於替換模板中指定字串
function replaceTemplateString($templateString) {
// 用來替換的變數
$title = "文章標題";
$body = "這裡是文章主體";
// 替換模板中指定字串
$showString = str_replace ( "%title%", $title, $templateString );
$showString = str_replace ( "%body%", $body, $showString );
// 返回替換後的結果
return $showString;
}


$template_file = "template.html";
$new_file = "new.html";
// 模版檔案指標
$template_juBing = fopen ( $template_file, "r" );
// 要產生的檔案指標
$newFile_juBing = fopen ( $new_file, "w" );

// 方式一擷取整體模板內容字串,替換後賦給新檔案
$templateString = fread ( $template_juBing, filesize ( $template_file ) );
$showString = replaceTemplateString ( $templateString ); // 替換模板中字串
fwrite ( $newFile_juBing, $showString ); // 將替換後的內容寫入產生的HTML檔案

/*
// 方式二迴圈讀模數版每行內容字串,替換後依次添加到新檔案
while ( ! feof ( $template_juBing ) ) { // feof() 函數檢測是否已到達檔案末尾。如果檔案指標到了末尾或者出錯時則返回 TRUE。否則返回FALSE(包括 socket 逾時和其它情況)。
$templateString = fgets ( $template_juBing ); // fgets(file,length) 從檔案指標中讀取一行並返回長度最多為 length - 1 位元組長度的字串,包括分行符號。如果沒有指定 length,則預設為 1K,或者說 1024 位元組。
$showString = replaceTemplateString ( $templateString );
fwrite ( $newFile_juBing, $showString ); // 第一次往開啟的指標檔案中寫入內容時會替換指標檔案中原有內容,在該檔案指標關閉前,fwrite函數再新增內容會在已新增內容之後
}
*/
// 關閉檔案指標
fclose ( $newFile_juBing );
fclose ( $template_juBing );

/*
資料庫與靜態頁的關係
通常資料庫內添加一條資訊同後,產生一個該資訊的靜態頁面,所以最好在資料庫表中添加一欄位儲存對應靜態頁面的路徑檔案名稱,方便以後的修改,刪除

模版的替換
一般來說,如果需要修改靜態HTML頁面的模版,通常的做法是將所有的已經產生的HTML頁面刪除,然後重新建立新的HTML頁面。(或者說全部重新覆蓋產生)

靜態頁上的動態操作
有些時候,在建立的靜態HTML頁上面也需要進行一些動態操作。例如,新聞系統中的每篇新聞要統計點擊率。
可通過一個寬和高都為0像素的影像控制來隱藏的調用一個php頁面來實現頁面計數器功能,如

連結目錄的靜態頁
通常對於使用靜態頁面的系統來說,往往將串連列表的目錄頁也產生靜態HTML檔案供訪問者瀏覽
注意的是因為每增加或者減少一條資料庫資訊都會對連結清單產生影響,因此,每次對資料庫資訊進行添加和刪除時都需要更新連結目錄的靜態頁。
分頁的設計可以通過建立多個連結目錄的靜態頁來完成。
*/


// 方法二根據緩衝區產生
ob_start (); // 當緩衝區啟用時,並且有ob_end_clean()的情況下,所有輸出列印的非檔案頭資訊均不會輸出列印到頁面,而是儲存在內部緩衝區。如果沒有ob_end_clean(),則資訊既被存在內部緩衝區,也被輸出列印
?>
this is test Output Control
echo "
this is test Output Control
";
include_once 'cache/newFile.php';

$contents = ob_get_contents (); // 擷取緩衝區到此為止儲存的資訊,緩衝區只儲存會向頁面瀏覽器輸出列印的內容,php執行代碼等不會儲存
// $contents = ob_get_clean(); // 擷取緩衝區到此為止儲存的資訊,並關閉清除緩衝區

// ob_end_flush();//輸出列印緩衝區到此為止儲存的資訊,並關閉清除緩衝區

ob_end_clean (); // 關閉清除緩衝區的內容

file_put_contents ( $new_file, $contents );// 向檔案寫入內容

?>

template.html
複製代碼 代碼如下:




%title%


%title%



%body%



http://www.bkjia.com/PHPjc/326972.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/326972.htmlTechArticlet1.php 複製代碼 代碼如下: ?php // 方法一根據模版產生靜態頁面 // replaceTemplateString函數用於替換模板中指定字串 function replaceTemplateString(...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.