• <dl id="c8sqq"><tr id="c8sqq"></tr></dl>
  • <menu id="c8sqq"><acronym id="c8sqq"></acronym></menu>
  • <menu id="c8sqq"></menu>
    <button id="c8sqq"><fieldset id="c8sqq"></fieldset></button><nav id="c8sqq"><option id="c8sqq"></option></nav>

    これは { file } ファイルのテンプレットです
    <\/BODY> HTML>

    PHP 処理: <\/strong> templetest.php
    コード:
    $title = \"TwoMax International テスト テンプレート\";
    $file = \"TwoMax Inter テスト テンプレット、
    著者:Matrix@Two_Max\";
    $fp = fopen (\"temp.html\",\"r\");
    $content = fread ($fp,filesize (\"temp.html\"));
    $content .= str_replace (\"{ file }\",$file,$content);
    $content .= str_replace (\"{ title }\",$title,$content); ;
    ?>


    テンプレート解析処理とは、PHP スクリプトを解析して処理した結(jié)果をテンプレートに埋め込む処理です。通常はテンプレート クラスの助けを借ります?,F(xiàn)在、より一般的なテンプレート解析クラスには、phplib、smarty、fastsmarty などが含まれます。テンプレートの解析処理の原則は、通常は置換です。また、判定やループなどの処理をテンプレートファイルに入れて解析クラスで処理することに慣れているプログラマもいますが、その典型的な応用が単純にループ処理であるブロック概念です。 PHP スクリプトはループの數(shù)、ループの方法などを指定し、テンプレート解析クラスがこれらの操作を?qū)g裝します。 <\/p>靜的ページと動的ページの長所と短所を比較した後、PHP を使用して靜的ファイルを生成する方法について話しましょう。
    PHP による靜的ページの生成とは、PHP の動的解析と HTML ページの出力を指すのではなく、PHP を使用して HTML ページを作成することを指します。同時に、HTML は書き込み不可能な性質(zhì)があるため、作成した HTML が変更された場合は、削除して再生成する必要があります。 (もちろん、通常のルールを使用して変更することもできますが、個人的には、削除して再生成するよりも速いと思いますが、メリットはありません。)
    本題に戻ります。 PHP のファイル操作関數(shù)を使用したことのある PHP ファンは、PHP にファイルを開くファイル操作関數(shù) fopen があることを知っています。ファイルが存在しない場合は、作成してみてください。これは、PHP を使用して HTML ファイルを作成できる理論的基礎です。 HTML ファイルの保存に使用されるフォルダーに書き込み権限 (つまり、権限定義 0777) がある限り、ファイルを作成できます。 (UNIX システムの場合、Win システムは考慮する必要はありません。) 上記の例を例として、最後の文を変更して test ディレクトリに test.html という名前の靜的ファイルを生成するように指定すると、次のようになります。
    コード:


    コードをコピー コードは次のとおりです:<\/u>


    $title = \"TwoMax Inter テスト テンプレート\";
    $file = \"TwoMax Inter テスト テンプレット、
    作成者:Matrix@Two_Max\"; = fopen (\"temp.html\",\"r\");
    $content = fread ($fp,filesize (\"temp.html\"));
    $content .= str_replace (\"{ file }\" , $file,$content);
    $content .= str_replace (\"{ title }\",$title,$content);
    $filename = \"test\/test.html \";
    $handle = fopen ($filename,\"w\"); \/\/ ファイル ポインターを開き、ファイルを作成します
    \/*
    ファイルが作成され、書き込み可能かどうかを確認します
    *\/
    if (!is_writable ($filename)){
    die (\"ファイル: \".$filename.\" は書き込み可能ではありません。プロパティを確認して再試行してください!\");
    }
    if ( !fwrite ($handle,$content)){ \/\/ファイルへの情報の書き込み
    die (\"Generate file\".$filename.\"Failed!\")
    }
    fclose ($handle); \/ Close pointer
    die (\"Create file\".$filename.\"Success!\");
    ?>


    <\/p>実際のアプリケーションでの一般的な問題の解決策のリファレンス:

    1. 記事リストの問題: <\/strong> <\/strong> ファイルが生成されるたびに、ファイル名を記録します。データベース內(nèi)の推奨記事については、靜的ファイルが保存されている指定されたフォルダー內(nèi)のページをポイントするだけです。 PHP 操作を使用して記事リストを処理し、文字列として保存し、ページの生成時にこの文字列を置き換えます。たとえば、ページ上の記事リストが配置されるテーブルと PHP 処理ファイルにマーク {articletable} を追加します。
    コード:


    コードをコピー コードは次のとおりです:<\/u><\/span> <\/p>$title = \"TwoMax International Test Template\";
    $file = \"TwoMax Inter test templatet,
    作者: Matrix@Two_Max\";
    $fp = fopen (\"temp.html\",\"r\");
    $content = fread ($fp,filesize (\"temp.html\"));
    $content .= str_replace (\" { file }\",$file,$content);
    $content .= str_replace (\"{ title }\",$title,$content); \/\/ リストの生成を開始します
    $list = '' ;
    $sql = \"記事から ID、タイトル、ファイル名を選択\";
    $query = mysql_query ($sql)
    while ($result = mysql_fetch_array ($query) )){
    $list .= ''.$result['title'].'';
    }
    $content .= str_replace (\"{articletable }\",$list,$content);
    \/\/リスト生成の終了
    \/\/ echo $content;
    $filename = \"test\/test.html\"
    $handle = fopen ($filename,\"w\");ファイルポインタを開いてファイルを作成します
    \/*
    ファイルが作成され書き込み可能かどうかを確認します
    *\/
    if (!is_writable ($filename)){
    die (\"File: \".$filename.\" は書き込み可能ではありません。屬性の後にもう一度試してください! \");
    }
    if (!fwrite ($handle,$content)){ \/\/ファイルに情報を書き込みます
    die (\"ファイルの生成\".$filename.\" 失敗しました! \");
    }
    fclose ($handle); \/\/ポインターを閉じます
    die (\"ファイルの作成\".$filename.\" 成功しました! \");
    ?>



    2 番目に、ページングの問題です。<\/span><\/p>
    ページングを指定すると、1 ページあたり 20 個の記事が表示されます。特定のサブチャネル リストには、データベース クエリが 45 あるため、最初にクエリを通じて次のパラメータを取得します: 1、ページの総數(shù)、2、ページごとの記事數(shù)。2 番目のステップ、for ($i = 0)。 ; $i < allpages; $i )、ページ要素の取得、分析、記事の生成はすべてこのループ內(nèi)で実行されます。違いは、文 die (\"Create file\".$filename.\"Success!\") が削除されていることです。このステートメントはプログラムの実行を中止するため、ループの後に表示されます。 例: <\/STRONG>

    コードをコピー

    コードは次のとおりです。 > $fp = fopen (\"temp .html\",\"r\"); $content = fread ($fp,filesize (\"temp.html\")); <\/U>$onepage = '20' ; <\/span>$sql = \"チャネル='$channelid' の記事から ID を選択します\"; <\/p>$num = mysql_num_rows ($query); = ceil ($num \/ $onepage);

    for ($i = 0;$i<$allpages; $i ){
    if ($i == 0){
    $indexpath = \"インデックス.html\";
    } else {
    $indexpath = \"index_\".$i.\"html\";
    }
    $start = $i * $onepage;
    $list = ' ';
    $sql_for_page = \"チャネル='$channelid' の記事から名前、ファイル名、タイトルを選択 $start,$onepage\";
    $query_for_page = mysql_query ($sql_for_page); result = $query_for_page){
    $list .= ''.$title.''
    }
    $content = str_replace (\"{articletable }\",$list,$content); if (is_file ($indexpath)){
    @unlink ($indexpath); \/\/ ファイルが既に存在する場合は削除します
    }
    $handle = fopen ($indexpath,\"w\") \/ \/ファイル ポインタを開いてファイルを作成します
    \/*
    ファイルが作成され、書き込み可能かどうかを確認します
    *\/
    if (!is_writable ($indexpath)){
    echo \"ファイル: 「.$indexpath.」は書き込み可能ではありません。プロパティを確認してください。もう一度お試しください。 \"; \/\/echo
    }
    if (!fwrite ($handle,$content)){ \/\/ファイルへの情報の書き込み
    echo \"Generate file\".$indexpath.\" 失敗しました! \"; \/\/ echo
    }
    fclose ($handle); \/\/ ポインタを閉じる
    }
    fclose ($fp);
    die (\"ページング ファイルの生成が完了しました。生成されました 不完全です。ファイル権限システムを確認して再生成してください! \");
    ?>


    一般的なアイデアは次のとおりです。その他のデータ生成、データ入出力チェック、ページング コンテンツ ポインティングなどを必要に応じてページに追加できます。
    実際の記事システムの処理プロセスでは、考慮すべき點がまだ多くあり、動的ページとは異なる點に注意する必要があります。しかし、一般的な考え方はこれであり、他の側(cè)面も類推して導き出すことができます。
    PHP を使用して靜的 Web サイト用のテンプレート フレームワークを作成します
    テンプレートを使用すると、Web サイトの構(gòu)造を改善できます。この記事では、PHP 4 の新機能とテンプレート クラスを使用して、多數(shù)の靜的 HTML ページで構(gòu)成される Web サイトのページ レイアウトをテンプレートを巧みに使用して制御する方法について説明します。
    概要:
    ========================================
    機能とレイアウトを分離
    ページ要素の重複を避ける
    靜的 Web サイト用のテンプレート フレームワーク
    ========================= ======== ===
    機能とレイアウトの分離<\/strong>
    まず、テンプレートを適用する 2 つの主な目的を見てみましょう:
    機能 (PHP) とレイアウトの分離 ( HTML)
    ページ要素の繰り返しを避ける
    最初の目的は最も話題になっている目的であり、プログラマーのグループがページのコンテンツを生成する PHP スクリプトを作成し、別のデザイナーのグループがページのコンテンツをデザインする狀況を想定しています。ページのコンテンツの最終的な外観を制御する HTML とグラフィック。機能とレイアウトを分離するという基本的な考え方は、これら 2 つのグループの人々が獨立したファイルのセットを作成して使用できるようにすることです。プログラマは、PHP コードのみを含むファイルのみを気にする必要があり、外観を気にする必要はありません。ページ
    とページ デザイナーのページに埋め込まれた PHP コードが壊れることを心配することなく、使い慣れたビジュアル エディターを使用してページ レイアウトをデザインできます。
    PHP テンプレートに関するチュートリアルをいくつか見たことがあれば、テンプレートがどのように機能するかをすでに理解しているはずです。単純なページ パーツを考えてみましょう。ページの上部はヘッダー、左側(cè)はナビゲーション バー、殘りはコンテンツ領域です。この種類の Web サイトには、次のテンプレート ファイルを含めることができます。

    コードをコピーします <\/u><\/span> コードは次のとおりです: <\/p>\n



    <br><body> <h1><a href="http://m.miracleart.cn/">国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂</a></h1> table><tr><td>{HEADER}<\/td><\/tr><br><tr><td>{LEFTNAV}<\/td><td>{CONTENT}< ;\/td><br><\/table> <br><br> <br><-- header.htm --> ; <br><img src=\"sitelogo.jpg\"> <\/p><br><a href=\"foo\"> \/a> <br><br><a href=\"bar\">Bar<\/a> これらのテンプレートからページがどのように構(gòu)築されているかを確認できます。メイン テンプレートはページ全體のレイアウトを制御します。 ; header テンプレートと leftnav テンプレートは、ページの共通要素を制御します。中括弧「{}」內(nèi)の識別子はコンテンツのプレースホルダーです。テンプレートを使用する主な利點は、インターフェイス設計者がフォントの設定、色やグラフィックの変更、ページのレイアウトの完全な変更など、希望に応じてこれらのファイルを編集できることです。これらのファイルには HTML コードのみが含まれており、PHP コードは含まれていないため、インターフェイス設計者は、通常の HTML エディタまたは視覚化ツールを使用してこれらのページを編集できます。 <br> PHP コードはすべて別のファイルに保存されます。これは、ページ URL によって実際に呼び出されるファイルです。 Web サーバーは PHP エンジンを通じてファイルを解析し、結(jié)果をブラウザに返します。一般に、PHP コードは、データベースへのクエリや特定の計算の実行など、常にページ コンテンツを動的に生成します。以下に例を示します。 <br><br><br><br>コードをコピー <br><br> コードは次のとおりです。 <p class=\"codetitle\"><span style=\"CURSOR: pointer\" onclick=\"doCopy('code19959')\"> <u><?php <\/U>\/\/ 例.php <\/span>require('class.FastTemplate.php'); <\/p>$tpl = new FastTemplate('.'); <p class=\"codebody\" id=\"code19959\">$tpl->define( array( 'main' => 'main') .htm' , <br>'header' => 'header.htm', <br>'leftnav' => 'leftnav.htm' ) ) <br>\/\/ ここでの PHP コードは、以下が含まれるように $content を設定します。適切なページ content<br>$tpl->assign('CONTENT', $content); <br>$tpl->parse('HEADER', 'header'); parse( 'LEFTNAV', 'leftnav'); <br>$tpl->parse('MAIN', 'main'); <br>$tpl->FastPrint('MAIN'); ;<br><br><br> ここでは人気のある FastTemplate テンプレート クラスを使用していますが、基本的な考え方は他の多くのテンプレート クラスでも同じです。まず、クラスをインスタンス化し、テンプレート ファイルの場所と、どのテンプレート ファイルがページのどの部分に対応するかを指示します。次に、ページ コンテンツを生成し、その結(jié)果をコンテンツ識別子に割り當てます。次に、各テンプレート ファイルを順番に解析します。テンプレート クラスは必要な置換操作を?qū)g行し、最終的に解析結(jié)果がブラウザに出力されます。 <br> このファイルは完全に PHP コードで構(gòu)成されており、HTML コードが含まれていません。これが最大の利點です。 PHP プログラマーは、最終ページを適切にフォーマットするための HTML を生成する方法を気にすることなく、ページのコンテンツを生成するコードの作成に集中できるようになりました。 <br> このメソッドと上記のファイルを使用して、完全な Web サイトを構(gòu)築できます。 http:\/\/www.foo.com\/example.php?article=099 など、PHP コードが URL 內(nèi)のクエリ文字列に基づいてページ コンテンツを生成する場合、これに基づいて完全な雑誌 Web サイトを構(gòu)築できます。 <br> テンプレートの使用には 2 番目の利點があることは簡単にわかります。上の例に示すように、ページの左側(cè)にあるナビゲーション バーは別のファイルとして保存されています。Web サイトのすべてのページの左側(cè)にあるナビゲーション バーを変更するには、このテンプレート ファイルを編集するだけです。 <br>ページ要素の重複を避ける<br> 「これはとても良いことだ」と思うかもしれません?!杆饯?Web サイトは主に多數(shù)の靜的ページで構(gòu)成されています。これで、すべてのページからそれらの共通部分を削除できます。これらを更新する 公開部分は面倒すぎる。將來的には、テンプレートを使用して管理しやすい統(tǒng)一されたページ レイアウトを作成できるようにする。「しかし、物事はそれほど単純ではありません?!埂胳o的なページが多數(shù)ある」という問題が明らかになります。 <br> 上記の例を考えてください。この例には実際には example.php ページが 1 つしかありません。Web サイト全體のすべてのページを生成できるのは、URL 內(nèi)のクエリ文字列を使用してデータベースなどの情報ソースからページを動的に構(gòu)築しているためです。 <br> 私たちのほとんどは、必ずしもデータベースをサポートしていない Web サイトを運営しています。私たちの Web サイトの大部分は靜的なページで構(gòu)成されており、PHP を使用して検索エンジンやフィードバック フォームなどの動的な機能をあちこちに追加しています。では、この種の Web サイトにテンプレートを適用するにはどうすればよいでしょうか? <br> 最も簡単な方法は、各ページ <br> の PHP ファイルをコピーし、PHP コード內(nèi)のコンテンツを表す変數(shù)を各ページの適切なページ コンテンツに設定することです。たとえば、home、about、product という 3 つのページがあるとします。それぞれを生成するために 3 つのファイルを使用できます。これら 3 つのファイルの內(nèi)容は次のようになります。 <br><\/u><p class=\"codetitle\"><span style=\"CURSOR: pointer\" onclick=\"doCopy('code46662')\"><u>コードをコピー <\/u><\/span> コードは次のとおりです。 <\/p>\n<p class=\"codebody\" id=\"code46662\"> <br><?php <BR>\/ \/ home.php <BR>require('class.FastTemplate.php'); <BR>$tpl = new FastTemplate('.'); <BR>$tpl->define( array( 'main' => 'main.htm', <br>'header' => 'header.htm', <br>'leftnav' => 'leftnav.htm' ) ); p>ようこそ訪問<\/p> <br><img src=\"demo.jpg\"><br><p>このウェブサイトを気に入っていただければ幸いです<\/p>\"; <br>$tpl-> ('CONTENT', $content); <br>$tpl->parse('HEADER', 'header'); <br>$tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); <br>$tpl->FastPrint('MAIN'); <br><br> <br> 明らかに、これはこのアプローチには 3 つの問題があります。この複雑なテンプレートに関係する PHP コードをページごとに複製する必要があるため、ページの保守が困難になるだけでなく、共通のページ要素が複製されることになります。ファイルには HTML と PHP コードが混在しています。コンテンツ変數(shù)に値を代入することは、多くの特殊文字を処理する必要があるため、非常に困難になります。 <br> この問題を解決する鍵は、PHP コードと HTML コンテンツを分離することです。ファイルからすべての HTML コンテンツを削除することはできませんが、PHP コードの大部分を移動することはできます。 <\/p>靜的 Web サイト テンプレート フレームワーク<br> まず、以前と同様に、ページのすべての共通要素とページ全體のレイアウトのテンプレート ファイルを作成し、すべてのページから共通部分を削除して、ページ コンテンツのみを殘します。 add 次のように、各ページに 3 行の PHP コードを追加します。 <br><br><br><br>コードをコピーします <p class=\"codetitle\"><span style=\"CURSOR: pointer\" onclick=\"doCopy('code66552')\"> コードは次のとおりです: <u><\/u> <\/span> <? php <\/p><!-- home.php --> <p class=\"codebody\" id=\"code66552\"><?php require('prepend.php') ?> <br><?php pageStart; ); <br><br><img src=\"demo.jpg\" alt=\"PHP を使用した靜的ページの生成に関する詳細なチュートリアル\" ><br> ;このウェブサイトを気に入っていただければ幸いです<\/p><br><?php pageFinish()?> <br><br><br> この方法は基本的に、前述のさまざまな問題を解決します。ファイル內(nèi)には現(xiàn)在 PHP コードが 3 行しかなく、その中にはテンプレートを直接參照していないため、このコードを変更する可能性は非常に低いです。また、HTML コンテンツは PHP マークアップの外側(cè)にあるため、特殊文字の処理に問題はありません。これら 3 行の PHP コードをすべての靜的 HTML ページに簡単に追加できます。 <br> require 関數(shù)は、必要なテンプレート関連のすべての PHP コードを含む PHP ファイルを?qū)毪筏蓼埂?pageStart 関數(shù)はテンプレート オブジェクトとページ タイトルを設定し、pageFinish 関數(shù)はテンプレートを解析して結(jié)果を生成し、ブラウザに送信します。 <br> これはどのようにして達成されるのでしょうか? pageFinish 関數(shù)が呼び出されるまで、ファイル內(nèi)の HTML がブラウザに送信されないのはなぜですか?答えは、ブラウザーに出力されたコンテンツをバッファーにインターセプトできるようにする PHP 4 の新機能にあります。 prepend.php の具體的なコードを見てみましょう: <br><\/p>\n<p class=\"codetitle\"><span style=\"CURSOR: pointer\" onclick=\"doCopy('code33440')\"><u>コードをコピーします <\/u><\/span> コードは次のとおりです: <\/p>\n<p class=\"codebody\" id=\"code33440\"> <br>< ;?php <br>require('class.FastTemplate.php'); <br>function pageStart($title = '') { <br>GLOBAL $tpl; <br>$tpl = new FastTemplate('.') ; <br>$ tpl->define( array( 'main' => 'main.htm', <br>'header' => 'header.htm', <br>'leftnav'=> ' leftnav.htm' ) ); <br>$tpl->assign('TITLE', $title); <br>} <br>function pageFinish() { <br>GLOBAL $tpl ; <br>$ content = ob_get_contents(); <br>$tpl->assign('CONTENT', $content); 'ヘッダー'); <br>$tpl->parse('LEFTNAV', 'leftnav'); <br>$tpl->parse('MAIN', 'main'); ;FastPrint('MAIN '); <br>} <br>?> <br><br> <br> pageStart 関數(shù)は、まずテンプレート インスタンスを作成して設定し、次に出力キャッシュを有効にします。この後、ページ自體のすべての HTML コンテンツがキャッシュに入ります。 pageFinish 関數(shù)は、キャッシュからコンテンツを取り出し、これらのコンテンツをテンプレート オブジェクトに指定し、最後にテンプレートを解析して完成したページを出力します。 <br> これは、テンプレート フレームワーク全體の作業(yè)プロセス全體です。まず、Web サイトの各ページに共通の要素を含むテンプレートを作成し、次にすべてのページから共通のページ レイアウト コードをすべて削除し、変更する必要のない 3 行の PHP コードに置き換えてから、FastTemplate クラス ファイルを追加します。 php をインクルード パスに追加すると、ページ レイアウトを一元管理できる Web サイトが得られ、信頼性と保守性が向上し、Web サイト レベルでの大規(guī)模な変更が非常に容易になります。 <br> この記事のダウンロード パッケージには、実行可能なサンプル Web サイト <\/p> が含まれており、そのコード コメントは前のコード コメントよりも詳細です。 FastTemplate クラスは http:\/\/www.thewebmasters.net\/ にあります。最新バージョン番號は 1.1.0 で、クラスが PHP 4 で正しく動作することを確認するための小さなパッチがそこにあります。この記事のダウンロード コード內(nèi)のクラスは、このパッチによって修正されています。 <br>PHP は靜的ページを簡単に生成します<br><br><br><br>コードをコピーします<br><p class=\"codetitle\"> コードは次のとおりです:<span style=\"CURSOR: pointer\" onclick=\"doCopy('code32776')\"><u> <\/u><?php <\/span> \/* <\/p>* ファイル名:index.php <p class=\"codebody\" id=\"code32776\">*\/ <br>require \"conn.php\"; <br>$query = \"select * from news order by datetime desc\"; mysql_query($ クエリ); <br><html> <br><meta http-equiv=\"Content-Type\" content=\"text\/html; ??? ???\"> <br><title>ニュース<\/title> <br><\/head> <br><body> <br><table width=\"500\" border=\" 1\" align =\"center\"> <br><tr> <br><td>title<\/td> <br><td width=\"200\">公開時刻<\/td> <br> < ;\/tr> <br><?<br>while($re = mysql_fetch_array($result)){ <br><tr><a href = \"<?= $re[\"newsid\"].\".html\"?>\"><?= $re[\"title\"]?<\/a><\/td> > <td><?= $re[\"datetime\"]?><br><\/tr> <br>} <br>? > <tr> <br><td> <br><td><a><\/td> <\/tr> <br><\/body> <br><br> <br><br><br>コードをコピー??><br> コードは次のとおりです: <br><\/p>\n<p class=\"codebody\" id=\"code8209\"> <br><?php <BR>\/* <BR>ファイル名: AddNews.php <BR>靜的なニュース ページを生成するための単純な動的追加<BR># <BR># テーブル構(gòu)造 `news` <BR># <BR>CREATE TABLE `news` ( <BR>`newsid` int(11) NOT NULL auto_increment, <BR>`title` varchar(100) NOT NULL デフォルト '', <BR>`content` text NOT NULL , <BR>`datetime` datetime NOT NULL デフォルト '0000-00-00 00:00:00', <BR>KEY `newsid` (`newsid`) <BR>) TYPE=MyISAM AUTO_INCREMENT=11; *\/ <BR>?> <br><br> <\/p>\n<br>PHP を使用して靜的 Web ページを生成する 2 つの関數(shù) <br>近年、World Wide Web (グローバル情報ネットワークとも呼ばれます) WWW) は情報処理技術(shù)の様相を変え続けています。 Web は、人々や企業(yè)がコミュニケーションやコラボレーションを行うための効果的なメディアとして急速に普及しました。一般に、ほぼすべての情報技術(shù)分野が WEB の影響を受けています。 Web アクセスにより、より多くのユーザーとより多くのデータがもたらされるため、サーバーやデータベースへの負荷が増大し、エンド ユーザーの応答時間がますます遅くなります。この需要の増大に対応するために CPU、ディスク ドライブ、メモリを絶えず増加させることと比較すると、WEB 動的 Web ページを靜的化することは、より現(xiàn)実的で経済的な選択肢となるはずです。 <br><br>PHP を使用して WEB 動的 Web ページの靜的化を?qū)g現(xiàn)する具體的な実裝関數(shù)は、関數(shù) gen_static_file()<br><br><br><p class=\"codetitle\"><span style=\"CURSOR: pointer\" onclick=\"doCopy('code81910')\">コードをコピーします<u><\/u> コードは次のとおりです:<\/span><\/p> <p class=\"codebody\" id=\"code81910\">function gen_static_file($program, $filename) <br>{ <br>$program 1= \"\/usr\/local\/apache\/htdocs\/php \/\" . $program; <br> $filename1 = \"\/usr\/local\/apache\/htdocs\/static_html\/\" . $filename; <br>$cmd_str = \"\/usr\/local\/php4\/bin\/php \" . $program1 . \" } \" . \" \"; <br>system($cmd_str) . \" <br><br> <br>この関數(shù)は靜的化を?qū)g現(xiàn)するための鍵です。つまり、PHP 動的ページ プログラムはブラウザに送信されず、$filename という名前のファイルに入力されます (図 2)。 2 つのパラメータのうち、$program は PHP 動的ページ プログラム、$filename は生成された靜的ページの名前 (必要に応じて獨自の命名規(guī)則を作成できます。これは非常に重要です。以下を參照)、\/usr\/local \/php4\/bin\/php は、PHP にはプログラムをファイルに入力する機能があり、PHP の中で外部コマンドを?qū)g行する機能です。また、動的ページを生成するすべての PHP プログラムは \/php\/ ディレクトリに配置する必要があり、新しく生成されたすべての靜的ページは \/static_html\/ ディレクトリに表示されることもわかります (これらのパスは特定のニーズに応じて設定できます)。 <br><\/p>college_static.php の靜的ページがどのように生成されるかを具體的な例で見てみましょう。 <br><br><br><br><br>コードをコピー<br><p class=\"codetitle\"> コードは次のとおりです。<span style=\"CURSOR: pointer\" onclick=\"doCopy('code34249')\"><u> <\/u>function gen_college_static () <\/span>{ <\/p>for ($i = 0; $i { <br>putenv(\"province_id=\" . $i); \/\/*.php ファイルはデータベースからデータを取得するときに使用されます。 <br>$filename. = \"college_static\".$i .html\"; <br>gen_static_file(\"college_static.php\", $filename); <br><br> <br><br>関數(shù) gen_static_file() を呼び出すと、college_static.php が靜的化され、33 個の靜的ページ college.static0.html~college.static33.html になります。$I が変更されると、$filename も変更されます。生成される靜的ページの數(shù)と名前を制御するには、データベースから値を直接取得します。生成された靜的ページへの他のプログラムの呼び出しは、靜的ページの命名規(guī)則と一致している必要があります。\n<br><\/span><\/p>"} </script> <meta http-equiv="Cache-Control" content="no-transform" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> <script>var V_PATH="/";window.onerror=function(){ return true; };</script> </head> <body data-commit-time="2023-12-28T14:50:12+08:00" class="editor_body body2_2"> <link rel="stylesheet" type="text/css" href="/static/csshw/stylehw.css"> <header> <div id="377j5v51b" class="head"> <div id="377j5v51b" class="haed_left"> <div id="377j5v51b" class="haed_logo"> <a href="http://m.miracleart.cn/ja/" title="" class="haed_logo_a"> <img src="/static/imghw/logo.png" alt="" class="haed_logoimg"> </a> </div> <div id="377j5v51b" class="head_nav"> <div id="377j5v51b" class="head_navs"> <a href="javascript:;" title="コミュニティ" class="head_nava head_nava-template1">コミュニティ</a> <div class="377j5v51b" id="dropdown-template1" style="display: none;"> <div id="377j5v51b" class="languagechoose"> <a href="http://m.miracleart.cn/ja/article.html" title="記事" class="languagechoosea on">記事</a> <a href="http://m.miracleart.cn/ja/faq/zt" title="トピックス" class="languagechoosea">トピックス</a> <a href="http://m.miracleart.cn/ja/wenda.html" title="に質(zhì)問" class="languagechoosea">に質(zhì)問</a> </div> </div> </div> <div id="377j5v51b" class="head_navs"> <a href="javascript:;" title="學ぶ" class="head_nava head_nava-template1_1">學ぶ</a> <div class="377j5v51b" id="dropdown-template1_1" style="display: none;"> <div id="377j5v51b" class="languagechoose"> <a href="http://m.miracleart.cn/ja/course.html" title="コース" class="languagechoosea on">コース</a> <a href="http://m.miracleart.cn/ja/dic/" title="プログラミング辭典" class="languagechoosea">プログラミング辭典</a> </div> </div> </div> <div id="377j5v51b" class="head_navs"> <a href="javascript:;" title="ツールライブラリ" class="head_nava head_nava-template1_2">ツールライブラリ</a> <div class="377j5v51b" id="dropdown-template1_2" style="display: none;"> <div id="377j5v51b" class="languagechoose"> <a href="http://m.miracleart.cn/ja/toolset/development-tools" title="開発ツール" class="languagechoosea on">開発ツール</a> <a href="http://m.miracleart.cn/ja/toolset/website-source-code" title="公式サイト" class="languagechoosea">公式サイト</a> <a href="http://m.miracleart.cn/ja/toolset/php-libraries" title="PHP ライブラリ" class="languagechoosea">PHP ライブラリ</a> <a href="http://m.miracleart.cn/ja/toolset/js-special-effects" title="JS特殊効果" class="languagechoosea on">JS特殊効果</a> <a href="http://m.miracleart.cn/ja/toolset/website-materials" title="サイト素材" class="languagechoosea on">サイト素材</a> <a href="http://m.miracleart.cn/ja/toolset/extension-plug-ins" title="拡張プラグイン" class="languagechoosea on">拡張プラグイン</a> </div> </div> </div> <div id="377j5v51b" class="head_navs"> <a href="http://m.miracleart.cn/ja/ai" title="AIツール" class="head_nava head_nava-template1_3">AIツール</a> </div> <div id="377j5v51b" class="head_navs"> <a href="javascript:;" title="レジャー" class="head_nava head_nava-template1_3">レジャー</a> <div class="377j5v51b" id="dropdown-template1_3" style="display: none;"> <div id="377j5v51b" class="languagechoose"> <a href="http://m.miracleart.cn/ja/game" title="ゲームのダウンロード" class="languagechoosea on">ゲームのダウンロード</a> <a href="http://m.miracleart.cn/ja/mobile-game-tutorial/" title="ゲームのチュートリアル" class="languagechoosea">ゲームのチュートリアル</a> </div> </div> </div> </div> </div> <div id="377j5v51b" class="head_search"> <input id="key_words" onkeydown="if (event.keyCode == 13) searchs('ja')" class="search-input" type="text" autocomplete="off" name="keywords" required="required" placeholder="Block,address,transaction,news" value=""> <a href="javascript:;" title="検索" onclick="searchs('ja')"><img src="/static/imghw/find.png" alt="検索"></a> </div> <div id="377j5v51b" class="head_right"> <div id="377j5v51b" class="haed_language"> <a href="javascript:;" class="layui-btn haed_language_btn">日本語<i class="layui-icon layui-icon-triangle-d"></i></a> <div class="377j5v51b" id="dropdown-template" style="display: none;"> <div id="377j5v51b" class="languagechoose"> <a href="javascript:setlang('zh-cn');" title="簡體中文" class="languagechoosea">簡體中文</a> <a href="javascript:setlang('en');" title="English" class="languagechoosea">English</a> <a href="javascript:setlang('zh-tw');" title="繁體中文" class="languagechoosea">繁體中文</a> <a href="javascript:;" title="日本語" class="languagechoosea">日本語</a> <a href="javascript:setlang('ko');" title="???" class="languagechoosea">???</a> <a href="javascript:setlang('ms');" title="Melayu" class="languagechoosea">Melayu</a> <a href="javascript:setlang('fr');" title="Fran?ais" class="languagechoosea">Fran?ais</a> <a href="javascript:setlang('de');" title="Deutsch" class="languagechoosea">Deutsch</a> </div> </div> </div> <span id="377j5v51b" class="head_right_line"></span> <div style="display: block;" id="login" class="haed_login "> <a href="javascript:;" title="Login" class="haed_logina ">Login</a> </div> <div style="display: block;" id="reg" class="head_signup login"> <a href="javascript:;" title="singup" class="head_signupa">singup</a> </div> </div> </div> </header> <main> <div id="377j5v51b" class="Article_Details_main"> <div id="377j5v51b" class="Article_Details_main1"> <div id="377j5v51b" class="Article_Details_main1M"> <div id="377j5v51b" class="phpgenera_Details_mainL1"> <a href="http://m.miracleart.cn/ja/" title="ホームページ" class="phpgenera_Details_mainL1a">ホームページ</a> <img src="/static/imghw/top_right.png" alt="" /> <a href="http://m.miracleart.cn/ja/php-tutorials.html" class="phpgenera_Details_mainL1a">php教程</a> <img src="/static/imghw/top_right.png" alt="" /> <a href="http://m.miracleart.cn/ja/php-notebook.html" class="phpgenera_Details_mainL1a">php手冊</a> <img src="/static/imghw/top_right.png" alt="" /> <span>PHP を使用した靜的ページの生成に関する詳細なチュートリアル</span> </div> <div id="377j5v51b" class="Articlelist_txts"> <div id="377j5v51b" class="Articlelist_txts_info"> <h1 class="Articlelist_txts_title">PHP を使用した靜的ページの生成に関する詳細なチュートリアル</h1> <div id="377j5v51b" class="Articlelist_txts_info_head"> <div id="377j5v51b" class="author_info"> <a href="http://m.miracleart.cn/ja/member/887227.html" class="author_avatar"> <img class="lazy" data-src="https://img.php.cn/upload/avatar/000/887/227/63bb7851c9547215.jpg" src="/static/imghw/default1.png" alt="WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB"> </a> <div id="377j5v51b" class="author_detail"> <a href="http://m.miracleart.cn/ja/member/887227.html" class="author_name">WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB</a> </div> </div> </div> <span id="377j5v51b" class="Articlelist_txts_time">Jun 13, 2016 pm 12:03 PM</span> <div id="377j5v51b" class="Articlelist_txts_infos"> <span id="377j5v51b" class="Articlelist_txts_infoss on">php</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">。</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">1つ</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">そして</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">動的</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">チュートリアル</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">はい</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">サーバ</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">比較する</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">生成する</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">プログラム</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">終わり</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">腳本</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">詳しい</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">靜的</span> <span id="377j5v51b" class="Articlelist_txts_infoss ">ページ</span> </div> </div> </div> <hr /> <div id="377j5v51b" class="article_main php-article"> <div id="377j5v51b" class="article-list-left detail-content-wrap content"> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5902227090019525" data-ad-slot="3461856641"> </ins> <p> <strong>1. PHP スクリプトと動的ページ。 </strong> <br> PHP スクリプトは、埋め込みなどの方法で HTML ファイルと混合したり、クラスや関數(shù)のカプセル化などの形式のテンプレートの形式でユーザー要求を処理したりできる、サーバー側(cè)のスクリプト プログラムです。いずれにせよ、基本はこれです。クライアントが特定のページをリクエストします -----> WEB サーバーは、指定された対応するスクリプトを処理に導入します -----> スクリプトはサーバーにロードされます -----> 指定された PHP 解析サーバーによってスクリプトはブラウザによって解析され、HTML 言語形式が形成されます----> 解析された HTML ステートメントはパッケージの形式でブラウザに返されます。このことから、ページがブラウザに送信された後は PHP が存在せず、HTML ステートメントに変換および解析されたことがわかります。実際、クライアントのリクエストは動的ファイルであり、PHP はそれを?qū)潖辘工毳讴`ジに解析してブラウザに送り返します。このページの処理方法は「動的ページ」と呼ばれます。 <br><strong>2 番目の靜的ページ。 </strong> <br> 靜的ページとは、サーバー側(cè)に実際に存在し、HTML、JS、CSS、およびその他のクライアント側(cè)スクリプトのみを含むページを指します。扱い方としては。クライアントは特定のページをリクエストします---> WEB サーバーは特定のページを確認してロードします---> WEB サーバーはそのページをパッケージの形式でブラウザに返します。このプロセスから、動的ページを比較して確認できます。動的ページは WEB サーバーの PHP パーサーで解析する必要があり、通常、HTML 言語情報パッケージを形成する前にデータベースに接続してデータベース アクセス操作を?qū)g行する必要がありますが、靜的ページは解析したり接続したりする必要はありません。データベースに直接送信できるため、サーバーの負荷が大幅に軽減され、サーバーの負荷容量が向上し、ページを開く速度と Web サイト全體を開く速度が大幅に向上します。ただし、その欠點は、リクエストを動的に処理できないことと、ファイルが実際にサーバー上に存在する必要があることです。 <br><strong>3. テンプレートとテンプレート分析。 </strong> <br> テンプレートにはコンテンツ HTML ファイルがまだ入力されていません。例: <br>temp.html <br>コード: <br></p> <p class="codetitle"><span style="CURSOR: pointer" onclick="doCopy('code47066')"><u>コードをコピー </u></span> コードは次のとおりです: </p> <p class="codebody" id="code47066"> <br>< ;HTML> <br><TITLE>{ title }

    これは { file } ファイルのテンプレットです
    HTML>

    PHP 処理: templetest.php
    コード:
    $title = "TwoMax International テスト テンプレート";
    $file = "TwoMax Inter テスト テンプレット、
    著者:Matrix@Two_Max";
    $fp = fopen ("temp.html","r");
    $content = fread ($fp,filesize ("temp.html"));
    $content .= str_replace ("{ file }",$file,$content);
    $content .= str_replace ("{ title }",$title,$content); ;
    ?>


    テンプレート解析処理とは、PHP スクリプトを解析して処理した結(jié)果をテンプレートに埋め込む処理です。通常はテンプレート クラスの助けを借ります?,F(xiàn)在、より一般的なテンプレート解析クラスには、phplib、smarty、fastsmarty などが含まれます。テンプレートの解析処理の原則は、通常は置換です。また、判定やループなどの処理をテンプレートファイルに入れて解析クラスで処理することに慣れているプログラマもいますが、その典型的な応用が単純にループ処理であるブロック概念です。 PHP スクリプトはループの數(shù)、ループの方法などを指定し、テンプレート解析クラスがこれらの操作を?qū)g裝します。

    靜的ページと動的ページの長所と短所を比較した後、PHP を使用して靜的ファイルを生成する方法について話しましょう。
    PHP による靜的ページの生成とは、PHP の動的解析と HTML ページの出力を指すのではなく、PHP を使用して HTML ページを作成することを指します。同時に、HTML は書き込み不可能な性質(zhì)があるため、作成した HTML が変更された場合は、削除して再生成する必要があります。 (もちろん、通常のルールを使用して変更することもできますが、個人的には、削除して再生成するよりも速いと思いますが、メリットはありません。)
    本題に戻ります。 PHP のファイル操作関數(shù)を使用したことのある PHP ファンは、PHP にファイルを開くファイル操作関數(shù) fopen があることを知っています。ファイルが存在しない場合は、作成してみてください。これは、PHP を使用して HTML ファイルを作成できる理論的基礎です。 HTML ファイルの保存に使用されるフォルダーに書き込み権限 (つまり、権限定義 0777) がある限り、ファイルを作成できます。 (UNIX システムの場合、Win システムは考慮する必要はありません。) 上記の例を例として、最後の文を変更して test ディレクトリに test.html という名前の靜的ファイルを生成するように指定すると、次のようになります。
    コード:


    コードをコピー コードは次のとおりです:


    $title = "TwoMax Inter テスト テンプレート";
    $file = "TwoMax Inter テスト テンプレット、
    作成者:Matrix@Two_Max"; = fopen ("temp.html","r");
    $content = fread ($fp,filesize ("temp.html"));
    $content .= str_replace ("{ file }" , $file,$content);
    $content .= str_replace ("{ title }",$title,$content);
    $filename = "test/test.html ";
    $handle = fopen ($filename,"w"); // ファイル ポインターを開き、ファイルを作成します
    /*
    ファイルが作成され、書き込み可能かどうかを確認します
    */
    if (!is_writable ($filename)){
    die ("ファイル: ".$filename." は書き込み可能ではありません。プロパティを確認して再試行してください!");
    }
    if ( !fwrite ($handle,$content)){ //ファイルへの情報の書き込み
    die ("Generate file".$filename."Failed!")
    }
    fclose ($handle); / Close pointer
    die ("Create file".$filename."Success!");
    ?>


    実際のアプリケーションでの一般的な問題の解決策のリファレンス:

    1. 記事リストの問題:
    ファイルが生成されるたびに、ファイル名を記録します。データベース內(nèi)の推奨記事については、靜的ファイルが保存されている指定されたフォルダー內(nèi)のページをポイントするだけです。 PHP 操作を使用して記事リストを処理し、文字列として保存し、ページの生成時にこの文字列を置き換えます。たとえば、ページ上の記事リストが配置されるテーブルと PHP 処理ファイルにマーク {articletable} を追加します。
    コード:


    コードをコピー コードは次のとおりです:

    $title = "TwoMax International Test Template";
    $file = "TwoMax Inter test templatet,
    作者: Matrix@Two_Max";
    $fp = fopen ("temp.html","r");
    $content = fread ($fp,filesize ("temp.html"));
    $content .= str_replace (" { file }",$file,$content);
    $content .= str_replace ("{ title }",$title,$content); // リストの生成を開始します
    $list = '' ;
    $sql = "記事から ID、タイトル、ファイル名を選択";
    $query = mysql_query ($sql)
    while ($result = mysql_fetch_array ($query) )){
    $list .= ''.$result['title'].'';
    }
    $content .= str_replace ("{articletable }",$list,$content);
    //リスト生成の終了
    // echo $content;
    $filename = "test/test.html"
    $handle = fopen ($filename,"w");ファイルポインタを開いてファイルを作成します
    /*
    ファイルが作成され書き込み可能かどうかを確認します
    */
    if (!is_writable ($filename)){
    die ("File: ".$filename." は書き込み可能ではありません。屬性の後にもう一度試してください! ");
    }
    if (!fwrite ($handle,$content)){ //ファイルに情報を書き込みます
    die ("ファイルの生成".$filename." 失敗しました! ");
    }
    fclose ($handle); //ポインターを閉じます
    die ("ファイルの作成".$filename." 成功しました! ");
    ?>



    2 番目に、ページングの問題です。


    ページングを指定すると、1 ページあたり 20 個の記事が表示されます。特定のサブチャネル リストには、データベース クエリが 45 あるため、最初にクエリを通じて次のパラメータを取得します: 1、ページの総數(shù)、2、ページごとの記事數(shù)。2 番目のステップ、for ($i = 0)。 ; $i < allpages; $i )、ページ要素の取得、分析、記事の生成はすべてこのループ內(nèi)で実行されます。違いは、文 die ("Create file".$filename."Success!") が削除されていることです。このステートメントはプログラムの実行を中止するため、ループの後に表示されます。 例:

    コードをコピー

    コードは次のとおりです。 > $fp = fopen ("temp .html","r"); $content = fread ($fp,filesize ("temp.html")); $onepage = '20' ; $sql = "チャネル='$channelid' の記事から ID を選択します";

    $num = mysql_num_rows ($query); = ceil ($num / $onepage);

    for ($i = 0;$i<$allpages; $i ){
    if ($i == 0){
    $indexpath = "インデックス.html";
    } else {
    $indexpath = "index_".$i."html";
    }
    $start = $i * $onepage;
    $list = ' ';
    $sql_for_page = "チャネル='$channelid' の記事から名前、ファイル名、タイトルを選択 $start,$onepage";
    $query_for_page = mysql_query ($sql_for_page); result = $query_for_page){
    $list .= ''.$title.''
    }
    $content = str_replace ("{articletable }",$list,$content); if (is_file ($indexpath)){
    @unlink ($indexpath); // ファイルが既に存在する場合は削除します
    }
    $handle = fopen ($indexpath,"w") / /ファイル ポインタを開いてファイルを作成します
    /*
    ファイルが作成され、書き込み可能かどうかを確認します
    */
    if (!is_writable ($indexpath)){
    echo "ファイル: 「.$indexpath.」は書き込み可能ではありません。プロパティを確認してください。もう一度お試しください。 "; //echo
    }
    if (!fwrite ($handle,$content)){ //ファイルへの情報の書き込み
    echo "Generate file".$indexpath." 失敗しました! "; // echo
    }
    fclose ($handle); // ポインタを閉じる
    }
    fclose ($fp);
    die ("ページング ファイルの生成が完了しました。生成されました 不完全です。ファイル権限システムを確認して再生成してください! ");
    ?>


    一般的なアイデアは次のとおりです。その他のデータ生成、データ入出力チェック、ページング コンテンツ ポインティングなどを必要に応じてページに追加できます。
    実際の記事システムの処理プロセスでは、考慮すべき點がまだ多くあり、動的ページとは異なる點に注意する必要があります。しかし、一般的な考え方はこれであり、他の側(cè)面も類推して導き出すことができます。
    PHP を使用して靜的 Web サイト用のテンプレート フレームワークを作成します
    テンプレートを使用すると、Web サイトの構(gòu)造を改善できます。この記事では、PHP 4 の新機能とテンプレート クラスを使用して、多數(shù)の靜的 HTML ページで構(gòu)成される Web サイトのページ レイアウトをテンプレートを巧みに使用して制御する方法について説明します。
    概要:
    ========================================
    機能とレイアウトを分離
    ページ要素の重複を避ける
    靜的 Web サイト用のテンプレート フレームワーク
    ========================= ======== ===
    機能とレイアウトの分離
    まず、テンプレートを適用する 2 つの主な目的を見てみましょう:
    機能 (PHP) とレイアウトの分離 ( HTML)
    ページ要素の繰り返しを避ける
    最初の目的は最も話題になっている目的であり、プログラマーのグループがページのコンテンツを生成する PHP スクリプトを作成し、別のデザイナーのグループがページのコンテンツをデザインする狀況を想定しています。ページのコンテンツの最終的な外観を制御する HTML とグラフィック。機能とレイアウトを分離するという基本的な考え方は、これら 2 つのグループの人々が獨立したファイルのセットを作成して使用できるようにすることです。プログラマは、PHP コードのみを含むファイルのみを気にする必要があり、外観を気にする必要はありません。ページ
    とページ デザイナーのページに埋め込まれた PHP コードが壊れることを心配することなく、使い慣れたビジュアル エディターを使用してページ レイアウトをデザインできます。
    PHP テンプレートに関するチュートリアルをいくつか見たことがあれば、テンプレートがどのように機能するかをすでに理解しているはずです。単純なページ パーツを考えてみましょう。ページの上部はヘッダー、左側(cè)はナビゲーション バー、殘りはコンテンツ領域です。この種類の Web サイトには、次のテンプレート ファイルを含めることができます。

    コードをコピーします コードは次のとおりです:



    <br><body> table><tr><td>{HEADER}</td></tr><br><tr><td>{LEFTNAV}</td><td>{CONTENT}< ;/td><br></table> <br><br> <br><-- header.htm --> ; <br><img src="sitelogo.jpg"> </p><br><a href="foo"> /a> <br><br><a href="bar">Bar</a> これらのテンプレートからページがどのように構(gòu)築されているかを確認できます。メイン テンプレートはページ全體のレイアウトを制御します。 ; header テンプレートと leftnav テンプレートは、ページの共通要素を制御します。中括弧「{}」內(nèi)の識別子はコンテンツのプレースホルダーです。テンプレートを使用する主な利點は、インターフェイス設計者がフォントの設定、色やグラフィックの変更、ページのレイアウトの完全な変更など、希望に応じてこれらのファイルを編集できることです。これらのファイルには HTML コードのみが含まれており、PHP コードは含まれていないため、インターフェイス設計者は、通常の HTML エディタまたは視覚化ツールを使用してこれらのページを編集できます。 <br> PHP コードはすべて別のファイルに保存されます。これは、ページ URL によって実際に呼び出されるファイルです。 Web サーバーは PHP エンジンを通じてファイルを解析し、結(jié)果をブラウザに返します。一般に、PHP コードは、データベースへのクエリや特定の計算の実行など、常にページ コンテンツを動的に生成します。以下に例を示します。 <br><br><br><br>コードをコピー <br><br> コードは次のとおりです。 <p class="codetitle"><span style="CURSOR: pointer" onclick="doCopy('code19959')"> <u><?php </U>// 例.php </span>require('class.FastTemplate.php'); </p>$tpl = new FastTemplate('.'); <p class="codebody" id="code19959">$tpl->define( array( 'main' => 'main') .htm' , <br>'header' => 'header.htm', <br>'leftnav' => 'leftnav.htm' ) ) <br>// ここでの PHP コードは、以下が含まれるように $content を設定します。適切なページ content<br>$tpl->assign('CONTENT', $content); <br>$tpl->parse('HEADER', 'header'); parse( 'LEFTNAV', 'leftnav'); <br>$tpl->parse('MAIN', 'main'); <br>$tpl->FastPrint('MAIN'); ;<br><br><br> ここでは人気のある FastTemplate テンプレート クラスを使用していますが、基本的な考え方は他の多くのテンプレート クラスでも同じです。まず、クラスをインスタンス化し、テンプレート ファイルの場所と、どのテンプレート ファイルがページのどの部分に対応するかを指示します。次に、ページ コンテンツを生成し、その結(jié)果をコンテンツ識別子に割り當てます。次に、各テンプレート ファイルを順番に解析します。テンプレート クラスは必要な置換操作を?qū)g行し、最終的に解析結(jié)果がブラウザに出力されます。 <br> このファイルは完全に PHP コードで構(gòu)成されており、HTML コードが含まれていません。これが最大の利點です。 PHP プログラマーは、最終ページを適切にフォーマットするための HTML を生成する方法を気にすることなく、ページのコンテンツを生成するコードの作成に集中できるようになりました。 <br> このメソッドと上記のファイルを使用して、完全な Web サイトを構(gòu)築できます。 http://www.foo.com/example.php?article=099 など、PHP コードが URL 內(nèi)のクエリ文字列に基づいてページ コンテンツを生成する場合、これに基づいて完全な雑誌 Web サイトを構(gòu)築できます。 <br> テンプレートの使用には 2 番目の利點があることは簡単にわかります。上の例に示すように、ページの左側(cè)にあるナビゲーション バーは別のファイルとして保存されています。Web サイトのすべてのページの左側(cè)にあるナビゲーション バーを変更するには、このテンプレート ファイルを編集するだけです。 <br>ページ要素の重複を避ける<br> 「これはとても良いことだ」と思うかもしれません?!杆饯?Web サイトは主に多數(shù)の靜的ページで構(gòu)成されています。これで、すべてのページからそれらの共通部分を削除できます。これらを更新する 公開部分は面倒すぎる。將來的には、テンプレートを使用して管理しやすい統(tǒng)一されたページ レイアウトを作成できるようにする?!袱筏?、物事はそれほど単純ではありません。」「靜的なページが多數(shù)ある」という問題が明らかになります。 <br> 上記の例を考えてください。この例には実際には example.php ページが 1 つしかありません。Web サイト全體のすべてのページを生成できるのは、URL 內(nèi)のクエリ文字列を使用してデータベースなどの情報ソースからページを動的に構(gòu)築しているためです。 <br> 私たちのほとんどは、必ずしもデータベースをサポートしていない Web サイトを運営しています。私たちの Web サイトの大部分は靜的なページで構(gòu)成されており、PHP を使用して検索エンジンやフィードバック フォームなどの動的な機能をあちこちに追加しています。では、この種の Web サイトにテンプレートを適用するにはどうすればよいでしょうか? <br> 最も簡単な方法は、各ページ <br> の PHP ファイルをコピーし、PHP コード內(nèi)のコンテンツを表す変數(shù)を各ページの適切なページ コンテンツに設定することです。たとえば、home、about、product という 3 つのページがあるとします。それぞれを生成するために 3 つのファイルを使用できます。これら 3 つのファイルの內(nèi)容は次のようになります。 <br></u><p class="codetitle"><span style="CURSOR: pointer" onclick="doCopy('code46662')"><u>コードをコピー </u></span> コードは次のとおりです。 </p> <p class="codebody" id="code46662"> <br><?php <BR>/ / home.php <BR>require('class.FastTemplate.php'); <BR>$tpl = new FastTemplate('.'); <BR>$tpl->define( array( 'main' => 'main.htm', <br>'header' => 'header.htm', <br>'leftnav' => 'leftnav.htm' ) ); p>ようこそ訪問</p> <br><img src="demo.jpg"><br><p>このウェブサイトを気に入っていただければ幸いです</p>"; <br>$tpl-> ('CONTENT', $content); <br>$tpl->parse('HEADER', 'header'); <br>$tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); <br>$tpl->FastPrint('MAIN'); <br><br> <br> 明らかに、これはこのアプローチには 3 つの問題があります。この複雑なテンプレートに関係する PHP コードをページごとに複製する必要があるため、ページの保守が困難になるだけでなく、共通のページ要素が複製されることになります。ファイルには HTML と PHP コードが混在しています。コンテンツ変數(shù)に値を代入することは、多くの特殊文字を処理する必要があるため、非常に困難になります。 <br> この問題を解決する鍵は、PHP コードと HTML コンテンツを分離することです。ファイルからすべての HTML コンテンツを削除することはできませんが、PHP コードの大部分を移動することはできます。 </p>靜的 Web サイト テンプレート フレームワーク<br> まず、以前と同様に、ページのすべての共通要素とページ全體のレイアウトのテンプレート ファイルを作成し、すべてのページから共通部分を削除して、ページ コンテンツのみを殘します。 add 次のように、各ページに 3 行の PHP コードを追加します。 <br><br><br><br>コードをコピーします <p class="codetitle"><span style="CURSOR: pointer" onclick="doCopy('code66552')"> コードは次のとおりです: <u></u> </span> <? php </p><!-- home.php --> <p class="codebody" id="code66552"><?php require('prepend.php') ?> <br><?php pageStart; ); <br><br><img src="/static/imghw/default1.png" data-src="demo.jpg" class="lazy" alt="PHP を使用した靜的ページの生成に関する詳細なチュートリアル" ><br> ;このウェブサイトを気に入っていただければ幸いです</p><br><?php pageFinish()?> <br><br><br> この方法は基本的に、前述のさまざまな問題を解決します。ファイル內(nèi)には現(xiàn)在 PHP コードが 3 行しかなく、その中にはテンプレートを直接參照していないため、このコードを変更する可能性は非常に低いです。また、HTML コンテンツは PHP マークアップの外側(cè)にあるため、特殊文字の処理に問題はありません。これら 3 行の PHP コードをすべての靜的 HTML ページに簡単に追加できます。 <br> require 関數(shù)は、必要なテンプレート関連のすべての PHP コードを含む PHP ファイルを?qū)毪筏蓼埂?pageStart 関數(shù)はテンプレート オブジェクトとページ タイトルを設定し、pageFinish 関數(shù)はテンプレートを解析して結(jié)果を生成し、ブラウザに送信します。 <br> これはどのようにして達成されるのでしょうか? pageFinish 関數(shù)が呼び出されるまで、ファイル內(nèi)の HTML がブラウザに送信されないのはなぜですか?答えは、ブラウザーに出力されたコンテンツをバッファーにインターセプトできるようにする PHP 4 の新機能にあります。 prepend.php の具體的なコードを見てみましょう: <br></p> <p class="codetitle"><span style="CURSOR: pointer" onclick="doCopy('code33440')"><u>コードをコピーします </u></span> コードは次のとおりです: </p> <p class="codebody" id="code33440"> <br>< ;?php <br>require('class.FastTemplate.php'); <br>function pageStart($title = '') { <br>GLOBAL $tpl; <br>$tpl = new FastTemplate('.') ; <br>$ tpl->define( array( 'main' => 'main.htm', <br>'header' => 'header.htm', <br>'leftnav'=> ' leftnav.htm' ) ); <br>$tpl->assign('TITLE', $title); <br>} <br>function pageFinish() { <br>GLOBAL $tpl ; <br>$ content = ob_get_contents(); <br>$tpl->assign('CONTENT', $content); 'ヘッダー'); <br>$tpl->parse('LEFTNAV', 'leftnav'); <br>$tpl->parse('MAIN', 'main'); ;FastPrint('MAIN '); <br>} <br>?> <br><br> <br> pageStart 関數(shù)は、まずテンプレート インスタンスを作成して設定し、次に出力キャッシュを有効にします。この後、ページ自體のすべての HTML コンテンツがキャッシュに入ります。 pageFinish 関數(shù)は、キャッシュからコンテンツを取り出し、これらのコンテンツをテンプレート オブジェクトに指定し、最後にテンプレートを解析して完成したページを出力します。 <br> これは、テンプレート フレームワーク全體の作業(yè)プロセス全體です。まず、Web サイトの各ページに共通の要素を含むテンプレートを作成し、次にすべてのページから共通のページ レイアウト コードをすべて削除し、変更する必要のない 3 行の PHP コードに置き換えてから、FastTemplate クラス ファイルを追加します。 php をインクルード パスに追加すると、ページ レイアウトを一元管理できる Web サイトが得られ、信頼性と保守性が向上し、Web サイト レベルでの大規(guī)模な変更が非常に容易になります。 <br> この記事のダウンロード パッケージには、実行可能なサンプル Web サイト </p> が含まれており、そのコード コメントは前のコード コメントよりも詳細です。 FastTemplate クラスは http://www.thewebmasters.net/ にあります。最新バージョン番號は 1.1.0 で、クラスが PHP 4 で正しく動作することを確認するための小さなパッチがそこにあります。この記事のダウンロード コード內(nèi)のクラスは、このパッチによって修正されています。 <br>PHP は靜的ページを簡単に生成します<br><br><br><br>コードをコピーします<br><p class="codetitle"> コードは次のとおりです:<span style="CURSOR: pointer" onclick="doCopy('code32776')"><u> </u><?php </span> /* </p>* ファイル名:index.php <p class="codebody" id="code32776">*/ <br>require "conn.php"; <br>$query = "select * from news order by datetime desc"; mysql_query($ クエリ); <br><html> <br><meta http-equiv="Content-Type" content="text/html; ??? ???"> <br><title>ニュース






    < ;/tr>
    while($re = mysql_fetch_array($result)){
    "> >
    }
    ? >







    コードをコピー??>
    コードは次のとおりです:


    /*
    ファイル名: AddNews.php
    靜的なニュース ページを生成するための単純な動的追加
    #
    # テーブル構(gòu)造 `news`
    #
    CREATE TABLE `news` (
    `newsid` int(11) NOT NULL auto_increment,
    `title` varchar(100) NOT NULL デフォルト '',
    `content` text NOT NULL ,
    `datetime` datetime NOT NULL デフォルト '0000-00-00 00:00:00',
    KEY `newsid` (`newsid`)
    ) TYPE=MyISAM AUTO_INCREMENT=11; */
    ?>


    PHP を使用して靜的 Web ページを生成する 2 つの関數(shù)
    近年、World Wide Web (グローバル情報ネットワークとも呼ばれます) WWW) は情報処理技術(shù)の様相を変え続けています。 Web は、人々や企業(yè)がコミュニケーションやコラボレーションを行うための効果的なメディアとして急速に普及しました。一般に、ほぼすべての情報技術(shù)分野が WEB の影響を受けています。 Web アクセスにより、より多くのユーザーとより多くのデータがもたらされるため、サーバーやデータベースへの負荷が増大し、エンド ユーザーの応答時間がますます遅くなります。この需要の増大に対応するために CPU、ディスク ドライブ、メモリを絶えず増加させることと比較すると、WEB 動的 Web ページを靜的化することは、より現(xiàn)実的で経済的な選択肢となるはずです。

    PHP を使用して WEB 動的 Web ページの靜的化を?qū)g現(xiàn)する具體的な実裝関數(shù)は、関數(shù) gen_static_file()


    コードをコピーします コードは次のとおりです:

    function gen_static_file($program, $filename)
    {
    $program 1= "/usr/local/apache/htdocs/php /" . $program;
    $filename1 = "/usr/local/apache/htdocs/static_html/" . $filename;
    $cmd_str = "/usr/local/php4/bin/php " . $program1 . " } " . " ";
    system($cmd_str) . "


    この関數(shù)は靜的化を?qū)g現(xiàn)するための鍵です。つまり、PHP 動的ページ プログラムはブラウザに送信されず、$filename という名前のファイルに入力されます (図 2)。 2 つのパラメータのうち、$program は PHP 動的ページ プログラム、$filename は生成された靜的ページの名前 (必要に応じて獨自の命名規(guī)則を作成できます。これは非常に重要です。以下を參照)、/usr/local /php4/bin/php は、PHP にはプログラムをファイルに入力する機能があり、PHP の中で外部コマンドを?qū)g行する機能です。また、動的ページを生成するすべての PHP プログラムは /php/ ディレクトリに配置する必要があり、新しく生成されたすべての靜的ページは /static_html/ ディレクトリに表示されることもわかります (これらのパスは特定のニーズに応じて設定できます)。

    college_static.php の靜的ページがどのように生成されるかを具體的な例で見てみましょう。




    コードをコピー

    コードは次のとおりです。 function gen_college_static () {

    for ($i = 0; $i {
    putenv("province_id=" . $i); //*.php ファイルはデータベースからデータを取得するときに使用されます。
    $filename. = "college_static".$i .html";
    gen_static_file("college_static.php", $filename);



    関數(shù) gen_static_file() を呼び出すと、college_static.php が靜的化され、33 個の靜的ページ college.static0.html~college.static33.html になります。$I が変更されると、$filename も変更されます。生成される靜的ページの數(shù)と名前を制御するには、データベースから値を直接取得します。生成された靜的ページへの他のプログラムの呼び出しは、靜的ページの命名規(guī)則と一致している必要があります。

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

    ホットAIツール

    Undress AI Tool

    Undress AI Tool

    脫衣畫像を無料で

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

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

    SublimeText3 中國語版

    SublimeText3 中國語版

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

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統(tǒng)合開発環(huán)境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

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

    PHPで現(xiàn)在のセッションIDを取得する方法は? PHPで現(xiàn)在のセッションIDを取得する方法は? Jul 13, 2025 am 03:02 AM

    PHPで現(xiàn)在のセッションIDを取得する方法は、session_id()関數(shù)を使用することですが、session_start()を呼び出して正常に取得する必要があります。 1。Session_start()を呼び出してセッションを開始します。 2。Session_Id()を使用してセッションIDを読み取り、ABC123DEF456GHI789に似た文字列を出力します。 3.返品が空の場合は、Session_start()が欠落しているかどうか、ユーザーが初めてアクセスするか、セッションが破壊されるかを確認します。 4.セッションIDは、ロギング、セキュリティ検証、およびクロスレクエスト通信に使用できますが、セキュリティに注意する必要があります。セッションが正しく有効になり、IDが正常に取得できることを確認してください。

    PHPストリングからサブストリングを取得します PHPストリングからサブストリングを取得します Jul 13, 2025 am 02:59 AM

    PHP文字列からサブストリングを抽出するには、Substr()関數(shù)を使用できます。これはSyntax substr(String $ string、int $ start、?int $ length = null)であり、長さが指定されていない場合は、端まで傍受されます。中國語などのマルチバイト文字を処理する場合、MB_Substr()関數(shù)を使用して、文字化けコードを避ける必要があります。特定のセパレーターに従って文字列を傍受する必要がある場合は、exploit()を使用するか、strpos()とsubstr()を組み合わせて、ファイル名拡張子またはドメイン名を抽出するなどの実裝できます。

    PHPコードの単體テストをどのように実行しますか? PHPコードの単體テストをどのように実行しますか? Jul 13, 2025 am 02:54 AM

    unittestinginphpinvolvevidevifignivision like like fike fikionsionsormethodstocatchsearlyandensureliablerefactoring.1)setupphpunitviacomposer、createatestdirectory、and configureautoloadandphpunit.xml.2)

    文字列をPHPの配列に分割する方法 文字列をPHPの配列に分割する方法 Jul 13, 2025 am 02:59 AM

    PHPでは、最も一般的な方法は、exploit()関數(shù)を使用して文字列を配列に分割することです。この関數(shù)は、指定された區(qū)切り文字を介して文字列を複數(shù)の部分に分割し、配列を返します。構(gòu)文はエクスプロイト(セパレーター、文字列、制限)であり、セパレーターはセパレーターであり、文字列は元の文字列であり、制限はセグメントの最大數(shù)を制御するオプションのパラメーターです。たとえば、$ str = "Apple、Banana、Orange"; $ arr = Explode( "、"、$ str);結(jié)果は["apple"、 "banaです

    JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

    JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

    HTML5のスクリプトの「async」および「defer」屬性を説明します。 HTML5のスクリプトの「async」および「defer」屬性を説明します。 Jul 13, 2025 am 03:06 AM

    AsyncとDeferの違いは、スクリプトの実行タイミングです。 Asyncを使用すると、実行命令を保証することなく、ダウンロード後すぐにスクリプトを並行してダウンロードし、実行することができます。 deferは、HTML解析が完了した後に順番にスクリプトを?qū)g行します。どちらもHTML解析をブロックしないでください。 ASYNCの使用は、コードの分析などのスタンドアロンスクリプトに適しています。 Deferは、DOMにアクセスするか、他のスクリプトに依存する必要があるシナリオに適しています。

    c c Jul 15, 2025 am 01:30 AM

    STD :: Chronoは、現(xiàn)在の時間の取得、実行時間の測定、操作時點と期間の測定、分析時間のフォーマットなど、時間の処理にCで使用されます。 1。STD:: Chrono :: System_Clock :: now()を使用して、現(xiàn)在の時間を取得します。 2。STD:: CHRONO :: STEADY_CLOCKを使用して実行時間を測定して単調(diào)さを確保し、DurateR_CASTを通じてミリ秒、秒、その他のユニットに変換します。 3。時點(Time_Point)と期間(期間)は相互運用可能ですが、ユニットの互換性と時計エポック(エポック)に注意を払う必要があります

    PHPの別のページにセッション変數(shù)を渡す方法は? PHPの別のページにセッション変數(shù)を渡す方法は? Jul 13, 2025 am 02:39 AM

    PHPでは、セッション変數(shù)を別のページに渡すために、キーはセッションを正しく開始し、同じ$ _Sessionキー名を使用することです。 1.各ページにセッション変數(shù)を使用する前に、session_start()と呼ばれ、スクリプトの前面に配置する必要があります。 2。$ _Session ['username'] = 'Johndoe'などのセッション変數(shù)を設定します。 3。別のページでsession_start()を呼び出した後、同じキー名を介して変數(shù)にアクセスします。 4.各ページでsession_start()が呼び出されることを確認し、事前にコンテンツの出力を避け、サーバーのセッションストレージパスが書き込み可能であることを確認してください。 5.SESを使用します

    See all articles
    title 公開時刻


    <nav id="oyiea"><tfoot id="oyiea"></tfoot></nav>
    <noframes id="oyiea"></noframes>
    <noframes id="oyiea"><fieldset id="oyiea"></fieldset></noframes>