導航:首頁 > 編程語言 > php生成靜態網頁

php生成靜態網頁

發布時間:2022-08-08 20:43:13

php靜態頁面怎麼做詳細點

確實有點籠統。不過我可以跟樓主大概說一下思路 一般的生成靜態頁面的方法就先製作一個靜態模板,在裡面需要動態改變的東西用特殊的代碼標記,然後再用PHP將標記替換後生成文件進行保存。 比如:<body> <div>{:This is the content:}</div> </body> 這個裡面的{:This is the content:}就是一個特殊的標記。我們設這段代碼在a.html文件中,我們用PHP將他讀入,<?php $b='這里是內容,可以從資料庫讀取,或者從其他途徑獲得'; $fp=fopen('a.html','r'); $content=fread($fp,filesize('a.html')); fclose($fp); $content=str_replace('{:This is the content:}',$b,$content);(額。。這個函數參數順序記不太清楚了) $fp1=fopen('b.html','w'); fwrite($fp,$content); fclose($fp); ?> 這樣我們就得到了b.html這個文件,就是一個靜態的文件,裡面的代碼如下: <body> <div>這里是內容,可以從資料庫讀取,或者從其他途徑獲得</div> </body> 這樣說,樓主明白了吧? 其實一般的網站是不需要生成這樣的靜態頁面的,流量低的網站命中率也就低了,而且更新起來非常麻煩。這就需要用到一些其他的技術的。比如SSI啊,比如只保存資料庫查詢結果啊。什麼的

❷ php生成HTML靜態頁面如何實現

php生成靜態頁面的技術很多,你看你需要那一種,像一樓二樓說得那樣,是用得smarty技術,你也可以直接用代碼實現,也可以用固有的CMS來實現或者用框架來實現。

❸ php如何實現網頁靜態

一、靜態化的優點:
1有利於搜索引擎收錄網站頁面的信息:搜索引擎更喜歡靜態的,更變於抓取,搜索引擎SEO排名會更容易提高。
2靜態網頁化網頁穩定
3可以提高網頁載入速度
4減輕伺服器負擔,瀏覽器不需要頻發調用資料庫。
5資料庫出錯不會影響正常訪問
二、偽靜態
PHP偽靜態:是利用Apache mod_rewite實現url重寫的方法
改寫訪問地址,能夠通過URL的PATHINFO模式來改動它。讓它看上去更像一個靜態頁面。從而有更大的幾率被搜索引擎抓取和收錄,僅是對搜索引擎比較友好,偽靜態化
三、純靜態化
純靜態化,就是生成HTML文件的方式,我們須要開啟PHP自帶的緩存機制,即ob_start來開啟緩存。而且在ob_start之前不能有不論什麼輸出,否則運行失敗,然後我們用ob_get_contents函數來獲取緩存中的內容,該函數會返回一個字元串。第三個函數就是ob_end_clean,它用來清空緩存中的內容而且關閉,成功返回True,失敗返回False。
<?php
if(file_exists("match.html") && (time()-filemtime("match.html"))<300)
{
//如果存在對應的靜態文件,則直接訪問
require_once("match.html");
}else{
//這里用數組來模擬資料庫操作,現實一般都是操作資料庫得到對應數據
$student = array("huangxing","chenyuwei",'xufei','zhangjingwen','xuepei');
ob_start();
//載入模板
require_once("muban.php");
file_put_contents("match.html",ob_get_clean());
require_once('match.html');
}

❹ php程序如何批量生成靜態頁

在速度上,靜態頁面要比動態頁面的比方php快很多,這是毫無疑問的,但是由於靜態頁面的靈活性較差,如果不藉助資料庫或其他的設備保存相關信息的話,整體的管理上比較繁瑣,比方修改編輯.比方閱讀許可權限制等,但是,對應一些我們經常頻頻使用的文件,比方說,開發的新聞發布系統,我們不希望很多用戶都讀取資料庫才顯示結果,這樣一方面消耗了伺服器的資源,另一方面佔去了瀏覽者大量可貴的響應時間,所有,有了"靜態頁面話"的做法,當前很多網站都採用這種技術,一般都是由管理後台控制,或者生成html直接顯示,或者xhtml用css控制顯示,或者生成xml用xslt顯示,這些技術都不是難的,在這里我就淺顯的說說生成html的方法.
有些信息比方經常不變的,但是還是能變的信息放在緩存中以加快顯示速度,這是很有價值的,所謂的緩存,通俗的理解就是一些保存在伺服器端的共用信息.它是於伺服器同生死的,我們在保存緩存的時候可以指定下次更新的時間的判斷,比方要在5分鍾更新一次,可以記錄上次更新的時間,和當前時間比較,如果大於
5
分鍾
,讀取資料庫,更新換成,否則直接讀取緩存數據,當然,緩存需要客戶端用戶激活的,只需一次.
ob_start()函數:打開輸出緩沖區.
函數格式
void
ob_start(void)
說明:當緩沖區激活時,所有來自PHP程序的非文件頭信息均不會發送,而是保存在內部緩沖區。為了輸出緩沖區的內容,可以使用ob_end_flush()或flush()輸出緩沖區的內容。
Flush:刷新緩沖區的內容,輸出。
函數格式:flush()
說明:這個函數經常使用,效率很高。
ob_get_contents
:返回內部緩沖區的內容。
函數格式:string
ob_get_contents(void)
說明:這個函數會返回當前緩沖區中的內容,如果輸出緩沖區沒有激活,則返回
FALSE.
ob_get_length:返回內部緩沖區的長度。
函數格式:int
ob_get_length(void)
說明:這個函數會返回當前緩沖區中的長度;和ob_get_contents一樣,如果輸出緩沖區沒有激活,則返回
FALSE.
ob_end_clean:刪除內部緩沖區的內容,並且關閉內部緩沖區
函數格式:void
ob_end_clean(void)
說明:這個函數不會輸出內部緩沖區的內容而是把它刪除
ob_end_flush:發送內部緩沖區的內容到瀏覽器,並且關閉輸出緩沖區
函數格式:void
ob_end_flush(void)
說明:這個函數發送輸出緩沖區的內容(如果有的話)
ob_implicit_flush:打開或關閉絕對刷新
函數格式:void
ob_implicit_flush
([int
flag])
說明:默認為關閉緩沖區,打開絕對輸出後,每個腳本輸出都直接發送到瀏覽器,不再需要調用
flush()
文件寫入:
int
fwrite
(
resource
handle,
string
string
[,
int
length]
)
fwrite()

string
的內容寫入
文件指針
handle
處。
如果指定了
length,當寫入了
length
個位元組或者寫完了
string
以後,寫入就會停止,視乎先碰到哪種情況。
fwrite()
返回寫入的字元數,出現錯誤時則返回
FALSE

相關參考官方網站:
文件參考
三、解決方案
思路:開啟
ob_start緩沖,當已經調出數據的時候獲取
ob_get_contents,然後生成靜態頁,ob_end_clean清除緩沖.ok,就這么來,來看一個例子(php+mysql的結合):
創建資料庫:
CREATE
TABLE
`bihtml`
(
`id`
int(11)
NOT
NULL
auto_increment,
`szdtitle`
varchar(16)
NOT
NULL,
`szdcontent`
text
NOT
NULL,
PRIMARY
KEY
(`id`)
)
TYPE=MyISAM;
獲取當前的ID,並導入模板:
ob_start();
$id=_POST['id']
if(!isset($id)&&is_integer($id))
{
@$db=new
mysqli('localhost','root','admin','bihtml');
$result=$db->fetch_one_array("select
*
from
szd_bi
where
id='$id'");
if(!empty($result))
{
$tmp->assign(array(
"Szdtitle",htmlspecialchars($result['titles']),
"Szdcontent",$result['titles']));
}
$tpl->display('default_1.tpl');
$this_my_f=
ob_get_contents();
//此處關鍵
ob_end_clean();
$filename
=
"$id.html";
if(tohtmlfile_cjjer($filename,$this_my_f))
echo
"生成成功
$filename";
else
echo
"生成識別";
}
}
//把生成文件的過程寫出函數
function
tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)
{
if
(is_file
($file_cjjer_name)){
@unlink
($file_cjjer_name);
}
$cjjer_handle
=
fopen
($file_cjjer_name,"w");
if
(!is_writable
($file_cjjer_name)){
return
false;
}
if
(!fwrite
($cjjer_handle,$file_cjjer_content)){
return
false;
}
fclose
($cjjer_handle);
//關閉指針
return
$file_cjjer_name;
}

❺ php怎麼生成靜態網頁

PHP 模板引擎Smarty可以生成【靜態頁面】緩存。

Smarty是一個使用PHP寫出來的模板引擎,是目前業界最著名的PHP模板引擎之一。它分離了邏輯代碼和外在的內容,提供了一種易於管理和使用的方法,用來將原本與HTML代碼混雜在一起PHP代碼邏輯分離。簡單的講,目的就是要使PHP程序員同前端人員分離,使程序員改變程序的邏輯內容不會影響到前端人員的頁面設計,前端人員重新修改頁面不會影響到程序的程序邏輯,這在多人合作的項目中顯的尤為重要。

Smarty優點
1. 速度:採用Smarty編寫的程序可以獲得最大速度的提高,這一點是相對於其它的模板引擎技術而言的。
2. 編譯型:採用Smarty編寫的程序在運行時要編譯成一個非模板技術的PHP文件,這個文件採用了PHP與HTML混合的方式,在下一次訪問模板時將WEB請求直接轉換到這個文件中,而不再進行模板重新編譯(在源程序沒有改動的情況下)
3.【 緩存技術】:Smarty選用的一種緩存技術,它可以將用戶最終看到的HTML文件緩存成一個【靜態的HTML頁】,當設定Smarty的cache屬性為true時,在Smarty設定的cachetime期內將用戶的WEB請求直接轉換到這個【靜態的HTML】文件中來,這相當於調用一個【靜態的HTML文件】。
4. 插件技術:Smarty可以自定義插件。插件實際就是一些自定義的函數。
5. 模板中可以使用if/elseif/else/endif。在模板文件使用判斷語句可以非常方便的對模板進行格式重排。

❻ 怎麼將PHP生成靜態的HTML

目前PHP的模板可以說是很多了,有功能強大的smarty,還有簡單的smarttemplate等。
它們每一種模板,都有一個獲取輸出內容的函數。
生成靜態頁面的方法,就是利用了這個函數。
用這個方法的優點是,代碼比較清晰,可讀性好:
<?php
require("smarty/Smarty.class.php");
$t = new Smarty;
$t->assign("title","Hello World!");
$content = $t->fetch("templates/index.htm");
//這里的 fetch() 就是獲取輸出內容的函數,現在$content變數裡面,就是要顯示的內容了
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>

❼ PHP 如何生成靜態 頁面

哦...這個噠
你用的是apache吧
看看裡面有個設置文件http.conf
裡面去找這條類似的
# Begin PHP Configure by PHPnow
LoadMole php5_mole "../php-5.2.6-Win32/php5apache2_2.dll"
<IfMole mod_php5.c>
PHPINIDir "../php-5.2.6-Win32/"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfMole>
# End PHP Configure by PHPnow
然後把
AddType application/x-httpd-php .php
改了
AddType application/x-httpd-php .htm
....................華麗的分界線...........................

然後去把你所有後綴為php的文件改成htm
然後就可以了

這招其實是用來防黑客注入滴~~~~

❽ 如何用PHP輸出靜態頁面

一種是利用模板技術,另一種是用ob系列函數。兩種方法,看起來都差不多,但是實際上,卻是不同的。
第一種:利用模板目前PHP的模板可以說是很多了,有功能強大的smarty,還有簡單易用的smart
template等。
它們每一種模板,都有一個獲取輸出內容的函數。
我們生成靜態頁面的方法,就是利用了這個函數。
用這個方法的優點是,代碼比較清晰,可讀性好。
$t
=
new
Smarty;
$t->assign("title","Hello
World!");
$content
=
$t->fetch("templates/index.htm");
//這里的
fetch()
就是獲取輸出內容的函數,現在$content變數裡面,就是要顯示的內容了
$fp
=
fopen("archives/2005/05/19/0001.html",
"w");
fwrite($fp,
$content);
fclose($fp);?>第二種方法:利用ob系列的函數這里用到的函數主要是
ob_start(),
ob_end_flush(),
ob_get_content(),
其中ob_start()是打開瀏覽器緩沖區的意思,
打開緩沖後,所有來自PHP程序的非文件頭信息均不會發送,
而是保存在內部緩沖區,直到你使用了ob_end_flush().
而這里最重要的一個函數,就是ob_get_contents(),
這個函數的作用是獲取緩沖區的內容,相當於上面的那個fetch(),
道理一樣的。代碼:

❾ php如何生成靜態頁面

lz只是想要主頁生成靜態嗎?這種問題我回答過,也許可以幫助你
如果是這樣就在你的主頁(index.php)同一文件夾下建立index0.php並保證當前文件夾可以寫入

index0.php代碼如下
<?php
ob_start(); //將這里以後的所有輸出內容保存
include('index.php'); //載入原首頁
$write=ob_get_contents(); //ob_get_contents函數獲取輸出內容,兼容php4以上版本
if (!$fh = fopen('index.html', 'w')) {
exit("不能打開文件 'index.html'");
}
if(fwrite($fh,$write)===false){
exit("不能寫入文件 'index.html'");
}
fclose($fh);
echo "靜態首頁成功更新!"
?>

每次打開這個頁面(index0.php),都會直接顯示你的首頁(動態地)並將顯示的東西寫入index.html文件,並在最後顯示是否成功更新。當然你可以選擇不顯示更新狀態,看你喜歡如何

以後你就可以通過訪問index0.php來生成靜態首頁,靜態首頁為index.html

閱讀全文

與php生成靜態網頁相關的資料

熱點內容
一堆文件夾怎麼弄出來 瀏覽:743
博途如何編譯硬體 瀏覽:418
fortran程序pdf 瀏覽:504
電池消耗演算法 瀏覽:394
伺服器中斷連接怎麼處理 瀏覽:222
上世紀互聯網不發達程序員很難 瀏覽:841
語音識別android開源 瀏覽:762
地埋式垃圾壓縮中轉站 瀏覽:902
apachehttpdlinux 瀏覽:944
快遞員中通app預付款是什麼 瀏覽:843
java路徑轉義 瀏覽:857
keytool加密演算法 瀏覽:131
笑臉圖案的APP相機是什麼軟體 瀏覽:249
app軟體為什麼會被下架 瀏覽:981
從內存到硬碟的命令是 瀏覽:52
程序員的爸爸們的發型 瀏覽:123
魔獸世界傷害壓縮是怎麼壓的 瀏覽:976
壓縮機型號hp 瀏覽:959
配音虛弱的程序員 瀏覽:61
8歲小學生程序員編程 瀏覽:256