この記事では、PHP で HTML ファイルを生成するために使用できる 3 つの方法を紹介します。1 つ目は PHP の ob_start を使用し、2 つ目はスマート テンプレート フレンドを使用してメソッドを生成します。
インターネット上で、動的 Web サイト全体を静的にする方法を尋ねている人をよく見かけます。実際、実装方法は非常に簡単です。
コードは次のとおりです | コードをコピーします |
//以下はコードです
// ob_end_clean() を終了し、このページを変数に出力します
$temp = ob_get_contents();
//ファイルを書き込みます
$fp = fopen('file name','w'); $fp,$temp) または die('ファイルの書き込みエラー');
これは、Web サイトを定期的に更新して再生成する必要があるため、あまり実用的ではありません。以下では私が使用する方法を使用します:
コードは次のとおりです
コードをコピー
(File_exists ("xxx.html") { | $ time = time (); 変更時間が半分の場合現在時刻と 1 時間異なる場合は、HTML ファイルに転送されます。そうでない場合は、HTML が再生成されます。 if($time - filemtime(“xxx.html”) < 30*60) { | header(“Location: xxx.html”);
}}//ob_start()を先頭に追加します ob_start(); //ページの詳細 //このページを最後に追加します変数 $temp = ob_get_contents(); ob_end_clean(); $fp = fopen('xxx.html','w'); または die ( 'Write file error'); //Redirect header("Location:xxx.html");
上記で使用したキャッシュファイルは、大量に生成されると過負荷になります。以下に、より効率的な方法を紹介します。効率的な方法
入力内容の投稿ページは以下の通りです: ファイル名: aa.html
コードは以下の通りです |
コードをコピー
ページを送信 |
| タイトル:
コンテンツ:
以下はコードスニペットです: ファイル名: bb.php
コードは次のとおりです | コードをコピーします |
//日付関数を定義します function getdatetime() { $datetime=getdate (); $strReturn=$datetime["year"]."-"; $strReturn=$strReturn.$datetime["mon"]."-"; $strReturn=$ strReturn.$datetime["mday "]; return $strReturn; } //時刻関数(ファイル名)を定義 function 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." ; | < ;/tr>"; $html1=$html1." gt;"; $html1=$html1.$htmlbody ; $html1=$html1 ." | "; $html1=$html1.""; $html1= $html1." html>";
//今日のフォルダーが存在するかどうかを判定 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(); $filename = "$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) / /Close pointer return $file_cjjer_name; //ファイル名を返す } ?>
|
smarty にはテンプレートページの内容を取得するメソッド fetch() があり、そのプロトタイプ宣言は次のようになります:gode
コードは次のとおりですコードをコピーするコード |
|
&lt;?phpfunctionfunction fetch($ resource_name、$ cache_id = null、$ compile_id = null、$ display = fals) ?>
最初のパラメータはテンプレート名、2 番目のパラメータはキャッシュされた ID、3 番目のパラメータはコンパイルされた ID、4 番目のパラメータはテンプレートのコンテンツを表示するかどうかです。静的ページを生成します |
コードは次のとおりです コードをコピー | $smarty = new Smarty() | //その他のテンプレート置換構文... //次の文はページ上のすべてのコンテンツを取得します。最後のパラメータが false であることに注意してください $content = $smarty->fetch('template name.tpl', null, null, false) //コンテンツを書き込みます以下の静的ファイル $fp = fopen('news.html', 'w' ); fwrite($fp, $content); //OK、ここに news.htmlページが生成されたら、次の作業を行うことができます
さて、上記の方法と組み合わせると、ファイルを生成する原理は、最初にデータを読み取り、次に定義されたテンプレートを提供することとほぼ同じです。最後に fopen 関数を使用して .html ファイルを生成します。
|
|
http://www.bkjia.com/PHPjc/444692.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/444692.html技術記事この記事では、PHP で HTML ファイルを生成するために使用できる 3 つの方法を紹介します。1 つ目は PHP の ob_start を使用し、2 つ目はスマート テンプレート フレンドを使用してメソッドを生成します。 私はよく...