首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 簡易模板引擎實作:靜態頁面生成教學

     編輯:PHP 綜合知識

PHP 字串替換實作簡易模板系統

模板引擎核心概念:分離邏輯與表現。最簡單的實作方式是使用預設標記(如 {title})配合 str_replace() 進行替換。本文示範最基礎的模板生成靜態頁面流程。

1. 模板檔案 templates.htm

<html>
<head>
<title>{title}</title>
</head>
<body>
<p>Hello {hello}</p>
</body>
</html>

2. PHP 處理邏輯

<?php
// 1. 定義資料
$data = [
    'title' => 'bianceng.cn',
    'hello' => 'www.bianceng.cn!'
];

// 2. 讀取模板
$template = file_get_contents('templates.htm');

// 3. 批次替換
$search = array_map(function($k) { return "{".$k."}"; }, array_keys($data));
$replace = array_values($data);
$output = str_replace($search, $replace, $template);

// 4. 輸出或儲存
echo $output;                    // 直接輸出
// file_put_contents('output.html', $output); // 或存成靜態檔
?>

3. 執行結果

<html>
<head>
<title>bianceng.cn</title>
</head>
<body>
<p>Hello www.bianceng.cn!</p>
</body>
</html>

進階擴展方向

功能 實作方式 範例語法
條件判斷 preg_replace_callback + eval (不推薦) 或自製解析器 {if $user.logged}...{/if}
迴圈輸出 區塊標記 + 重複替換 {foreach $items as $item}...{/foreach}
模板繼承 區塊替換機制 (如 Twig/Blade) {extends 'layout.html'}
快取編譯 將模板編譯為 PHP 程式碼快取 大幅提升效能
自動跳脫 預設 htmlspecialchars 防 XSS {$var|escape}

推薦成熟模板引擎

🚀 實務專案建議使用

  • Twig:Symfony 官方、語法優雅、安全、快取編譯、繼承區塊完整
  • Blade:Laravel 內建、直觀語法、編譯為 PHP、效能極佳
  • Smarty:老牌、功能豐富、{section} 迴圈、插件機制
  • Plates:原生 PHP 語法、無編譯步驟、輕量

靜態頁面生成完整流程

  1. 後台管理編輯內容 → 存入資料庫
  2. 點擊「生成靜態」→ 觸發 PHP 腳本
  3. 腳本查詢資料 → 套用模板 → file_put_contents() 寫入 public/article/123.html
  4. Nginx/Apache 直接服務靜態檔 → 極高效能、無 PHP 解析開銷
  5. CDN 快取靜態檔 → 全球加速
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved