本示例圍繞 cms 系統的靜態頁面方案出發,展示批量生成靜態 html 功能。
注:本文程式只能在 windows 的 dos 或 linux 下執行 php 命令來執行。
本示例主要有4個檔案:config.inc.php(配置檔案)、db.class.php(資料庫 pdo 類)、model.class.php(pdo資料庫操作類)、index.php(執行檔案)
config.inc.php
<?php
header('content-type:text/html;charset=utf-8');
date_default_timezone_set('prc');
define('root_path', dirname(__file__)); // 根目錄
define('db_dsn', 'mysql:host=localhost;dbname=article'); // mysql 的 pdo dsn
define('db_user', 'root'); // 資料庫使用者名稱
define('db_pwd', '1715544'); // 資料庫密碼(請您根據實際情況自行設定)
function __autoload($classname)
?>
db.class.php
<?php
// 連線資料庫
class db catch (pdoexception $e)
return $pdo; }}
?>
model.class.php
<?php
// 操作 sql
class model catch (pdoexception $e)
return $row; }
/*** 返回全部資料,返回 pdostatement 物件
* @param string $sql
* @return pdostatement
*/public function getall($sql) catch (pdoexception $e) }}
?>
index.php
<?php
require_once './config.inc.php';
$m = new model();
$ids = $m->getall("select id from article order by id asc");
foreach ($ids as $rowidarr)
$idstr = rtrim($idstr, ','); // 所有文章的 id 號集合
$idarr = explode(',', $idstr); // 分割成陣列
// 下面的程式迴圈生成靜態頁面
foreach ($idarr as $articleid)
$articlepath = root_path. '/article'; // $articlepath 為靜態頁面放置的目錄
if (!is_dir($articlepath)) mkdir($articlepath, 0777); // 檢查目錄是否存在,不存在則建立
$filename = root_path . '/article/' . $articleid . '.html'; // $filename 生成的靜態檔名,格式:文章id.html(主鍵id不可能衝突)
$articletempath = root_path . '/templates/article.html'; // $articletempath 文章模板路徑
$articlecontent = file_get_contents($articletempath); // 獲取模板裡面的內容
// 對模板裡面設定的變數進行替換。即比如:把模板裡面的 <> 替換成資料庫裡讀取的 title,替換完畢賦值給變數 $articlecontent
$articlecontent = getarticle(array_keys($article), $articlecontent, $article);
$resource = fopen($filename, 'w');
file_put_contents($filename, $articlecontent); // 寫入 html 檔案
}/**
* getarticle($arr, $content, $article) 對模板進行替換操作
* @param array $arr 替換變數陣列
* @param string $content 模板內容
* @param array $article 每篇文章內容陣列,格式:array('title'=>xx, 'date'=>xx, 'author'=>xx, 'source'=>xx, 'content'=>xx);
*/function getarticle($arr, $content, $article) >', $article[$item], $content);
} return $content;
}?>
執行截圖(windows 的 dos 為例)
執行完畢截圖:
PHP 批量生成靜態html
本示例主要有4個檔案 config.inc.php 配置檔案 db.class.php 資料庫 pdo 類 model.class.php pdo資料庫操作類 index.php 執行檔案 header content type text html charset utf 8 date defaul...
PHP生成靜態html
一 建立muban.html檔案,新增如下 內容 二 建立php檔案,新增如下 header content type text html charset utf 8 將資料存入二維陣列 con array array 文章標題1 文章內容1 array 文章標題2 文章內容2 array 文章標題...
php生成靜態html頁面
ob start 是開啟緩衝區的,就是要把您需要生成的靜態檔案的內容快取在這裡 ob get contents 是讀出緩衝區裡的內容,下面有 為例 ob end clean 這個比較重要,只有使用了這個函式後,緩衝區裡的內容才會讀 ob start require index.php 模板頁面 te...