ホームページ > バックエンド開発 > PHPチュートリアル > ob 関数を使用して静的 HTML ファイルを出力する方法を説明します。

ob 関数を使用して静的 HTML ファイルを出力する方法を説明します。

巴扎黑
リリース: 2023-03-13 15:52:01
オリジナル
1626 人が閲覧しました

ob 関数を使用して静的 HTML ファイルを出力する方法

1. ob 関数の概要

1.1, ob_start - 出力制御バッファーをオンにする

bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )
この関数は出力バッファを開きます。出力バッファリングがアクティブ化されている場合、スクリプトはコンテンツ (http ヘッダーを除く) を出力せず、代わりに出力されるコンテンツは内部バッファーに保存されます。
詳細については、以下を参照してください:

1.2、ob_get_contents - 出力バッファの内容を返します

string ob _get_contents (void)
ただ出力バッファの内容を取得しますが、クリアしません。
詳細については、以下を参照してください:

1.3 - 出力バッファの内容をフラッシュして(送信して)バッファを閉じます

bool ob_end_flush (void)
この関数は、トップレベルのバッファーの内容を送信し (コンテンツがある場合)、バッファーを閉じます。バッファの内容をさらに処理したい場合は、ob_end_flush() を呼び出した後にバッファの内容が破棄されるため、ob_end_flush() の前に ob_get_contents() を呼び出す必要があります。
詳細は参照:

1.4, ob_flush - 出力バッファーの内容をフラッシュアウト(送信)します

void ob_flush (void)
この関数は、バッファーの内容を送信します (バッファー内にコンテンツがある場合)。バッファの内容をさらに処理したい場合は、ob_flush() を呼び出した後にバッファの内容が破棄されるため、ob_flush() の前に ob_get_contents() を呼び出す必要があります。
この関数は出力バッファを破壊しませんが、ob_end_flush() のような関数はバッファを破壊します。
詳細は参照:

1.5、ob_get_clean - 現在のバッファーの内容を取得し、現在の出力バッファーを削除します

string ob_g​​et_clean (void)
現在のバッファーの内容を取得し、現在の出力バッファーを削除します。
ob_g​​et_clean() は基本的に ob_get_contents() と ob_end_clean() を一緒に実行します。
詳細は参考:
1.6、ob_get_flush - バッファの内容を文字列形式でフラッシュ(送信)します。そして出力バッファリング地区を閉じます

string ob_g​​et_flush (void )ob_get_flush() は、バッファの内容をフラッシュ (送信) し、内容を文字列として返し、出力バッファを閉じます。
注: この関数は、バッファーの内容も文字列形式で返す点を除いて、ob_end_flush() に似ています。
詳細は参考:

2. ob()の使い方HTMLの静的ページを作成する関数

2.1、単純な出力 HTML ファイル

ob_start(); //Openバッファ
$info = 'こんにちは! ! ';
$file=fopen('index.html','w'); //ファイルを開きますindex.html
fwrite($file,$info); //index.html
fclose($file); ;




2.2. データベース情報を取得し、HTML ファイルを出力します

require_once 'coon.php';$sql = "select * from name order by id;";$result = $link->query($sql);$arr = array();while($ re = $result->fetch(PDO::FETCH_ASSOC)){ $arr[] = $re;} //出力内容を HTML ファイルにループしますob_start() //バッファを開きます ? >< ;!-- 以下は出力内容です--> ループ出力 HTML コンテンツ






foreach ($arr as $key => $value) {
echo "";
echo "";
echo "";
echo "";
echo "";
}
?> ;

id< /td>
名前pwd
{$value['id']} $value[ 'name']}{$value['pwd']}



$content = ob_get_contents();//現在のバッファの内容を取得します
ob_end_clean() ;//現在の出力バッファを削除
file_put_contents('index2.html',$content);//ファイルを書き込む
?>
結果をindex2.htmlに出力する




















出力制御関数はたくさんありますが、最初にこれらを紹介します
2.3 指定された内容が確実に得られるように読み取り方法を最適化します。ファイルが正しく読み込まれています
<?php
	$fileName = &#39;index2.html&#39;;
	$re = file_exists($fileName);//判断文件是否存在
	$dValue = 0;if($re){
		$fileTime = filectime($fileName);//时间戳
		$dValue = time() -  $fileTime;//获取创建时间,文件缓存一般存在有效期}if(file_exists($fileName) && $dValue < 3600){
		$content = file_get_contents($fileName);
		echo $content;
		die;}else{if($re){
			unlink($fileName);//过去先删除,}
		require_once &#39;coon.php&#39;;
		$sql = "select * from name order by id;";
		$result = $link->query($sql);
		$arr = array();while($re = $result->fetch(PDO::FETCH_ASSOC)){ 
			$arr[] = $re;} 
		//循环输出内容到html文件
		ob_start(); //打开缓冲区  ?><!-- 下面是输出的内容 --><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>循环输出的html内容</title></head>
<body>
	<table>
		<thead>
			<tr>
				<td>id</td><td>name</td>
				<td>pwd</td></tr>
		</thead><tbody><?php
				foreach ($arr as $key => $value) {
					echo "<tr>";

					echo "<td>{$value[&#39;id&#39;]}</td>";
					echo "<td>{$value[&#39;name&#39;]}</td>";
					echo "<td>{$value[&#39;pwd&#39;]}</td>";

					echo "</tr>";}?></tbody>
	</table></body>
</html><?php

$content = ob_get_contents();//得到当前缓冲区的内容ob_end_clean();//删除当前输出缓file_put_contents(&#39;index2.html&#39;,$content);//写入文件}?>
ログイン後にコピー
まず、ファイルが存在するかどうかを確認し、存在する場合は、現在時刻と作成時刻との時間差を調べて、現在のファイルが有効であるかどうかを判断します。
3. 概要
1. アクセス時にサーバーはファイルをブラウザに返すだけで、メモリの消費が少なく、アクセス速度が高速です。

2. セキュリティ、動的ウェブサイト開発言語は絶対に安全ではありませんが、静的ウェブページにはサーバーがハッキングされることを除いてプログラムに抜け穴はありません

以上がob 関数を使用して静的 HTML ファイルを出力する方法を説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート