PHPでHTMLファイルを生成する様々な方法の紹介
動的Webサイト全体を静的にする方法をインターネット上でよく見かけますが、実際、実装方法は非常に簡単です。
コードは次のとおりです |
コードをコピー |
//先頭に追加
ob_start(); ob_start(); //以下はコードです //最後に追加します
ob_end_clean(); このページを変数 $temp = ob_get_contents(); に出力します。
//ファイルを書き込む $fp = fopen(‘ファイル名’,’w’);
fwrite($fp,$temp) または die(‘ファイル書き込みエラー’) ?>
|
これは最も基本的な方法であり、ウェブサイトを更新する必要があり、HTML を定期的に再生成する必要があるため、まだあまり実用的ではありません
以下は私が使用する方法です:
コードは次のとおりです
コードをコピー |
|
if(file_exists(“xxx.html”)){ $time = time();
// ファイル変更時刻と現在時刻の差が 30 分未満の場合は HTML ファイルに転送され、それ以外の場合は HTML が再生成されます if($time -
filemtime("xxx.html")
header(“Location:xxx.html”); } } // 先頭に ob_start(); を追加します。
ob_start(); //ページの詳細 //最後にob_end_clean()を追加して、このページを変数に出力します $temp =
ob_get_contents(); ob_end_clean(); //ファイルを書き込む $fp =
fopen('xxx.html','w'); fwrite($fp,$temp) または die('ファイル書き込みエラー');
//リダイレクト header(“場所:xxx.html”);
|
上記で使用したキャッシュファイルは大量に生成されると過負荷になりますので、より効率的な方法を以下に紹介します。
入力内容の投稿ページは以下の通りです
ファイル名:aa.html
コードは次のとおりです
コードをコピー
|
|
ページを送信
|
以下はコード スニペットです:
ファイル名: bb.php
コードは次のとおりです |
コードをコピー |
//日付関数の定義 function
getdatetime() { $datetime=getdate(); $strReturn=$datetime["year"]."-"; $strReturn=$strReturn.$datetime["mon"]."-"; $ strReturn=$strReturn.$datetime["mday"]; return
$strReturn; }
//時間関数(ファイル名)を定義 関数
gettime() { $times=getdate(); $strtime=$times["年"]; $strtime=$strtime.$times["月"]; $strtime=$strtime.$times[ "mday"]; $strtime=$strtime.$times["分"]; $strtime=$strtime.$times["秒"]; return
$strtime; } ?>
//送信された値が空かどうかを判断します $submit=$_POST["submit"]; //ファイルヘッダー情報を定義します $htmltitle=$_POST["htmltitle"]; //ファイルの内容を定義します $ htmlbody=$_POST["htmlbody"]; if
($submit)
{ //HTML ファイルのタグを定義します $html1=$html1.""; $html1=$html1." "; $html1=$html1.""; $html1=$html1.$htmltitle; $html1=$html1.""; $html1=$html1.""; $html1=$html1.""; $html1=$html1.""; $html1=$html1.""; $html1=$html1.$htmltitle; $html1=$html1." | $html1=$html1.""; $html1=$html1.$htmlbody; $html1=$html1." | "; $html1=$html1.""; $html1=$html1."";
//今日のフォルダーが存在するかどうかを判断します if (!is_dir(getdatetime()))
{ //存在しない場合は作成 mkdir(getdatetime(),0777); }
//HTML ファイルとして書き込みます $filedir=getdatetime(); $filename=gettime(); $filename=$filename.".html"; $fp=fopen("$filedir/$filename"," w "); fwrite($fp,$html1); fclose($fp); echo
"<script>alert('ファイルは正常に書き込まれました');location.href='111.php';</script>"; } ?>
|
プロンプト ファイルが正常に書き込まれたら成功です。その後、対応するディレクトリに戻って、静的 HTML ファイルが生成されるかどうかを確認してください。
スマートなテンプレート生成方法
コードは次のとおりです |
コードをコピー |
require_once("./config/config.php"); ob_start(); $id=$_GET[id]; $sql="select * from table_name where
id='$id'"; $result=mysql_query($sql); $rs=mysql_fetch_object($result); $smarty->assign("showtitle",$rs->title); $ Smarty->assign("showcontent",$rs->content); $smarty->display("content.html"); $this_my_f=
ob_get_contents(); ob_end_clean(); $ファイル名 =
"$id.html"; tohtmlfile_cjjer($filename,$this_my_f); //ファイル生成関数 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 //ファイル名を返す } ?>
|
smarty には、テンプレート ページのコンテンツを取得するためのメソッド fetch() があり、その宣言プロトタイプは次のようになります。
コードは次のとおりです
| コードをコピー
|
function fetch($resource_name, $cache_id = null,
$compile_id = null、$display = false)
?>
|
最初のパラメータはテンプレート名、2 番目のパラメータはキャッシュされた ID、3 番目のパラメータはコンパイル ID、4 番目のパラメータは静的ページを生成するためにこのメソッドを使用する必要があります。
コードは次のとおりです
コードをコピー |
|
$smarty = new Smarty(); //その他のテンプレート置換構文...
//次の文は、ページ上のすべてのコンテンツを取得します。最後のパラメータは false であることに注意してください。 $content =
$smarty->fetch('テンプレート名.tpl', null, null, false); // コンテンツを以下の静的ファイルに書き込みます
$fp = fopen('news.html', 'w'); fwrite($fp, $content);
fclose($fp); //OK、ここで news.html 静的ページが生成されるので、次の作業を行うことができます
?>
上記の方法と組み合わせると、ファイル生成の原理はほぼ同じです。まず、データを読み取り、次に定義されたテンプレートを与え、最後に fopen 関数を使用して .html ファイルを生成します。
| 原文はhttp://www.111cn.net/から。
http://www.bkjia.com/PHPjc/919575.htmlwww.bkjia.com
truehttp://www.bkjia.com/PHPjc/919575.html技術記事 PHP を使用して HTML ファイルを生成するさまざまな方法の紹介。インターネット上で、動的 Web サイト全体を静的にする方法を尋ねている人をよく見かけます。実際、その実装方法は非常に簡単です。 コードは次のとおりです コードをコピーします...