PHP簡易實現批量生成html靜態頁面

PHP簡易實現批量生成html靜態頁面

大家好,我駭Yangrl.
原來哈起一坨(蠢萌),寫了頁面以後,複製十份,挨着改裏面的文本,imp,url等內容,做成十張頁面(類似新聞詳情頁啊,商品詳情頁等)其實整體框架都沒改變,就是內容變了。
“你就甘於當一隻 只會重複無聊的工作的沙皮狗麼?”
作用於還未了解模板引擎,或者未接觸框架。又和我一樣遵循懶及生產力原則,希望減少重複呆板工作,避免時間的不必要浪費的同學。
原理:PHP中str_replace替換函數的運用,


首先需要一個數據庫,我叫他newsdata. 和一張表:(news) 具體如下圖:

description

提一點,新聞內容和後面說到的html路徑的類型設爲了TEXT,在MySQL—Front中會顯示MEMO,不影響調用,要查看內容點擊下面會彈出一六進制編輯器即可查看內容

description


接着你可以創建一個connect.php用於連接數據庫,好處是以後直接引用(require_once)就ok,也可以直接在php文件中進行書寫
description


然後就是建模板文件(model.html),因爲我們只需要調用數據,改想改的內容就ok,其他像什麼導航啊,頁腳啊,左邊右邊背景雜七雜八都不變。我就最簡單的實現,(對頭,懶遭了!)搞懂了當然可以擴展啊,寫一個和我寫的一樣各種炫酷霸道的模板 [手動滑稽],要替換哪裏,花括號一括起就開整。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{news_title}</title>
</head>
<body>
    新聞標題:{news_title}//調用
    新聞內容:{news_contents}//調用
</body>
</html>

順帶簡單寫一個發佈表單(modelform.html),提交到馬上要說,主要的add.php文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>modelform</title>
</head>
<body>
    <form method="post" action="add.php">
        新聞標題:<input type="text" name="news_title" id=""><br/>
        新聞內容:<textarea name="news_contents" cols="50" rows="10"></textarea><br/>
        <input type="submit" value="發佈">
    </form>
</body>
</html>

接下來就是重點了 add.php

<?php
header("content-type:text/html;charset=utf-8");
//引用連接數據庫文件
require_once("connect.php");

//獲取表單數據
$title=$_POST["news_title"];
$content=$_POST["news_contents"];

//建一個txt,值自增,用作命名
$countFile="count.txt";

//文件不存在則創建
if (!file_exists($countFile)) {
    fopen($countFile,"wb");
}

$handle=fopen($countFile,"rb");
$num=fgets($handle,20);

//每次增加1
$num=$num+1;
fclose($handle);

//更新$num
$handle=fopen($countFile,"wb");
fwrite($handle,$num);
fclose($handle);

//獲取html路徑,可自定義
$extend=".html";
$path="news".$num.$extend;

//插入數據
$sql="INSERT news(news_title,news_contents,news_path) VALUES('".$title."','".$content."','".$path."');";
$conn->query($sql);

/**---開始替換---**/
//打開html模板
$handle=fopen("model.html","rb");

//讀取模板內容
$str=fread($handle,filesize("model.html"));

//替換 str_replace("被替換的","替換成","在哪替換")
//爲什麼在$str裏替換?因爲上面我們纔讀取的模板內容,肯定在模板裏換撒
$str=str_replace("{news_title}", $title, $str);
$str=str_replace("{news_contents}",$content,$str);
fclose($handle);

//把替換的內容寫進生成的html文件
$handle=fopen($path,"wb");
fwrite($handle,$str);
fclose($handle);


OK!
description

description

description

description

最後感謝“yeqihong”,參考了他的文章 PHP生成靜態html網頁的三種方法 。晚安!

“in case I don’t see you,
good afternoon,good evening,and good night!——《楚門的世界》”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章