ホームページ バックエンド開発 PHPチュートリアル PHPを使用して静的HTMLページを生成する2つの一般的な方法

PHPを使用して静的HTMLページを生成する2つの一般的な方法

Jul 29, 2016 am 09:15 AM
html nbsp parser position

ユーザーが動的リンクをクリックするたびに、データ クエリ リクエストがサーバーに送信されるためです

何百万もの訪問者がいる可能性がある Web サイトの場合、これは間違いなくサーバーに大きな負担になります

そのため、動的データを変換しますそれを静的 HTML ページに変換することは、人的資源と物的リソースを節約するための第一の選択肢になりました

私はこれまで対応する経験がなかったので、最初はこのテクノロジーが非常に謎に満ちていると思いました

しかし、いくつかの例を読んだ後、そうではないことがわかりましたとても複雑です(ただし、インターネット上の情報は特に詳細ではありません)

午前と午後の実験を経て、最終的にタスクを完了しました。ここにいくつかの考えと簡単な例を示します

笑わないでください

。一般的に、HTML ページを変換して出力するには、PHP を使用します。Da Xia の記事を引用するには、次の 2 つの方法があります:

1 つ目の方法: テンプレートを使用します。現在、強力な Smarty やシンプルで使いやすい Smarttemplate など、多数の PHP テンプレートがあります。各テンプレートには、出力コンテンツを取得する関数があります。静的ページを生成するには、この関数を使用します。この方法を使用する利点は、コードがより明確で読みやすいことです。

ここでは、静的ページを生成する方法を説明するために例として Smarty を使用します:

  1. require("smarty/Smarty.class.php");
  2. $t = new Smarty;
  3. $t ->assign("title","Hello World!");
  4. $content = $t->fetch("templates/index.htm");
  5. //ここでの fetch() は次のとおりです出力コンテンツ関数を取得するには、$content 変数に表示するコンテンツを入れます
  6. $fp = fopen("archives/2005/05/19/0001.html", "w");
  7. fwrite($ fp, $content );
  8. fclose($fp);
  9. ?>

2 番目の方法: ob シリーズの関数を使用します。ここで使用される関数は主に ob_start()、ob_end_flush()、ob_get_content() です。ここで、ob_start() はブラウザのバッファを開くことを意味し、代わりに PHP プログラムからのファイル以外のヘッダー情報はすべて送信されません。この関数の最も重要な関数は、上記の fetch() と同等のバッファの内容を取得することです。理由は同じです。

  1. ob_start();
  2. echo "Hello World!";
  3. $content = ob_get_contents();//php ページによって出力されたすべてのコンテンツを取得します
  4. $fp = fopen( "archives /2005/05/19/0001.html", "w");
  5. fwrite($fp, $content);
  6. fclose($fp);
  7. ?>

2 番目のタイプ I方法は、ob シリーズの関数を使用することです

最初にこれを読んだとき、私は少しわかりませんでしたが、後で、ob が出力バッファリング、つまり出力キャッシュであることを知りました

出力の準備ができたら、すべてのデータが保存されます。サーバーがphpを解析した後、クライアントに出力するHTMLコードはすべてobに保存されます。HTMLの静的ページを出力したい場合は、キャッシュを取り出してHTMLページに書き込むだけです。

その原理は実際には非常に単純です

ここではいくつかの関数が使用されています。私はPHPを初めて使用するため、多くの関数を理解していませんので、ここで説明します

ob_start()。 : キャッシュの「キャプチャ」を開始します。つまり、ここからブラウザのキャッシュを開きます

ob_end_flush(): ブラウザのキャッシュをオフにします

ob_g​​et_content(): キャッシュされたコンテンツを読み取ります

fopen("ファイルパス", "オープンモード" ) ファイルを開く この関数にはいくつかの開くモードがあります。主なモードは次のとおりです:

"r" 読み取り専用モードで開き、ファイル ポインタをファイル ヘッダーにポイントします。

「r+」 読み取りおよび書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。

"w" は書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。

「w+」 読み取りおよび書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。

fwrite("ファイル名", "書き込み内容") ファイルを書き込みます

fclose() ファイルを閉じます

変換したいHTMLファイルはたくさんあるので、数百になる可能性があるので、fopenへのパスはありませんここで静的に指定することができます。HTML ファイルの名前付けを容易にするために、ユーザーが送信した ID やその他の情報を保存できるパス変数を設定できます。前回、PHP で XML データを読み取る方法の簡単な例を示します。

  1. ob_start();//ブラウザキャッシュを開きます
  2. //以下はXMLデータを読み込みます
  3. $parser = xml_parser_create(); //パーサーエディタを作成します
  4. xml_set_element_handler($parser, "startElement", "endElement");//タグトリガー設定時の対応関数はそれぞれstartElementとendElenmentです
  5. xml_set_character_data_handler($parser, "characterData");//データ設定時reading 対応する関数
  6. $xml_file="1.xml";// 読み取る XML ファイルを指定します (url など)
  7. $filehandler = fopen($xml_file, "r");// ファイルを開きます
  8. while ($data = fread($filehandler, 4096))
  9. {
  10. xml_parse($parser, $data, feof($filehandler));
  11. }//それぞれの処理のために 4096 バイトを取り出しますtime
  12. fclose($filehandler);
  13. xml_parser_free($parser);//パーサー parser を閉じて解放します
  14. $name=false;
  15. $position=false;
  16. function startElement( $parser_instance , $element_name, $attrs) //開始タグイベントの関数
  17. {
  18. global $name,$position;
  19. if($element_name=="NAME")
  20. {
  21. $name=true;
  22. $position=false;
  23. echo "名前:";
  24. }
  25. if($element_name=="POSITION")
  26. {$name=false;
  27. $position=true;
  28. echo "位置: ";
  29. }
  30. }
  31. function CharacterData($parser_instance, $xml_data) //データ読み込み時の関数
  32. {
  33. global $name,$position;
  34. if($position)
  35. echo $xml_data."
    ";
  36. if($name)
  37. echo $xml_data."
    ";
  38. }
  39. function endElement($parser_instance, $element_name ) //タグイベントを終了する関数
  40. {
  41. global $name,$position;
  42. $name=false;
  43. $position=false;
  44. }
  45. //Xmlデータの読み込みが完了
  46. $ htmlname=$id.".html";//$id はユーザーによって渡される ID を表します
  47. $htmlpath="archives/".$htmlname; //パス変数を設定します
  48. $ content = ob_get_contents( );//PHP ページによって出力されたすべてのコンテンツを取得します
  49. $fp = fopen($htmlpath, "w");
  50. fwrite($fp, $content);
  51. fclose($fp) ;
  52. ?>

転載: http://www.cnblogs.com/awinlei/archive/2013/03/04/2942962.html

上記では、PHP を使用して静的 HTML ページを生成するための 2 つの一般的な方法と、関連するコンテンツを紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles