出力制御関数は、header() または setcookie() を使用して送信されるファイル ヘッダー情報には影響せず、echo() および PHP コードと同様のデータ ブロックにのみ影響します。
出力制御の一般的な印象を与えるために、まず簡単な例を見てみましょう:
例 1.
PHP コード
ob_start(); // バッファを開きます
echo "Hellon"; // 出力
header("location:index.php"); // ブラウザをindex.phpにリダイレクトします
ob_end_flush(); // コンテンツ全体をブラウザに出力します
?>
header() 関数を知っている人は誰でも、この関数がファイル ヘッダーをブラウザーに送信することを知っていますが、この関数を使用する前に出力 (スペースなどの空の出力を含む) がある場合は、キャリッジ リターンと改行) を使用するとエラーが表示されます。最初の行の ob_start() を削除してこのプログラムを実行すると、次のエラー メッセージが表示されることがわかります。「ヘッダーはすべて送信準備ができました。」ただし、ob_start を使用すると、エラー メッセージは表示されません。その理由は、バッファーが開かれたときに、echo 以降の文字がブラウザーに出力されず、flush を使用するまでサーバー上に出力されないためです。または ob_end_flush なので、ファイル ヘッダー出力エラーは発生しません。
1. 関連関数の紹介:
1. フラッシュ: バッファーの内容を更新して出力します。
関数形式: flash()
説明: この関数は頻繁に使用され、非常に効率的です。
2. ob_start: 出力バッファを開きます
関数形式: void ob_start(void)
説明: バッファがアクティブ化されると、PHP プログラムからのファイル以外のヘッダー情報はすべて送信されず、内部バッファ。
バッファの内容を出力するには、ob_end_flush()またはflush()を使用してバッファの内容を出力できます。
3、ob_get_contents: 内部バッファの内容を返します。
使用法: string ob_get_contents(void)
説明: この関数は、現在のバッファーの内容を返します。出力バッファーがアクティブ化されていない場合は、FALSE を返します。
4. ob_get_length: 内部バッファーの長さを返します。
使用法: int ob_get_length(void)
説明: この関数は、出力バッファーがアクティブ化されていない場合、ob_get_contents と同様に現在のバッファーの長さを返します。その後、FALSE を返します。
5. ob_end_flush: 内部バッファの内容をブラウザに送信し、出力バッファを閉じます。
使用法: void ob_end_flush(void)
説明: この関数は、出力バッファーの内容 (存在する場合) を送信します。
6. ob_end_clean: 内部バッファの内容を削除し、内部バッファを閉じます。
使用法: void ob_end_clean(void)
説明: この関数は内部バッファの内容を出力するのではなく、内部バッファを削除します。
7. ob_implicit_flush: 絶対フラッシュをオンまたはオフにします
使用法: void ob_implicit_flush ([int flag])
注: Perl を使用したことのある人なら誰でも、この文字列は $|=x の意味を知っています。 ob_implicit_flush 関数もそれと同じです。デフォルトでは、絶対出力をオンにした後、各スクリプト出力がブラウザに直接送信され、flush() を呼び出す必要はありません。
2. 詳細な理解:
1. フラッシュ関数について: この関数は、ブラウザのキャッシュを更新する非常に便利な関数です。フラッシュを説明するための非常に明白な効果を持つ例
例 2.
PHP コード
// テストの結果、このサイズの下限は 256 文字であることがわかりました。これは、今後キャッシュによって受信されるコンテンツが
// 継続的に送信されることを意味します。
For($j = 1; $j echo $j.”
flush(); // これにより、キャッシュ内の新しいコンテンツが絞り出されて表示されます。ブラウザに移動します
sleep(1); //プログラムを少しの間「スリープ」させます。これにより、効果をより明確に確認できるようになります
}
?>
注: ob_implicit_flush() をプログラムの先頭に追加して絶対リフレッシュを有効にすると、プログラム内で flash() を使用できなくなります。これによる利点は次のとおりです。効率が向上します。
2. ob シリーズの機能について:
最初に私の友人 y10k の例を引用したいと思います:
例 3.
たとえば、サーバーとクライアントの設定情報を使用できますが、この情報はクライアントによって異なりますが、phpinfo() 関数の出力を保存したい場合はどうすればよいでしょうか。バッファ制御がない前はまったく方法がなかったと言えますが、バッファ制御があれば簡単に解決できます:
PHP コード
ob_start (); // バッファを開きます
phpinfo(); // phpinfo 関数を使用します
$info=ob_get_contents(); // バッファの内容を $info に割り当てます
$file= fopen('info.txt', 'w'); // ファイル info.txt を開きます
fwrite($file,$info); // info.txt に情報を書き込みます
fclose($file); file info.txt
?>
上記の方法を使用すると、以前は不可能だったかもしれない、さまざまなユーザーの phpinfo 情報を保存できます。実は上記は一部の「処理」を「関数」に変換する方法なのです!
これで、ob_start() の関数をある程度理解できたのではないでしょうか。上の例は単純に見えますが、実際には、ob_start() の使用の重要なポイントをマスターしたことになります。
. ob_start を使用してブラウザのキャッシュを開くと、flush()、ob_end_flush() を呼び出す前 (またはプログラムが実行される前) にキャッシュの内容が出力されなくなります。
. これで、出力コンテンツの後にヘッダー、setcookie、セッションを使用できることがわかりました。これは ob_start の優れた機能であり、ob_start のパラメーターをキャッシュに書き込むこともできます。入力後、ob_start("ob_gzhandler"); などのコマンドを自動的に実行します。最も一般的に使用される方法は、ob_get_contents() を使用してキャッシュ内のコンテンツを取得し、それを処理することです。
処理が完了したら、flush()、ob_end_flush()、プログラム実行後の自動出力など、様々な方法で出力することができます。もちろん、ob_get_contents() を使用している場合は、出力メソッドを自分で制御する必要があります。
次に、ob シリーズの関数で何ができるかを見てみましょう...
1. 静的テンプレート技術
はじめに: いわゆる静的テンプレート技術は、ユーザーがクライアント上で取得するものを特定のメソッドを使用して作成することです。サイドはPHP HTMLページによって生成されます。この HTML ページが更新されなくなると、別のユーザーがこのページを再度参照したときに、プログラムは、sina、163、sohu などの大量の情報を含む一部の Web サイトの PHP および関連データベースを呼び出すことはなくなります。このようなテクノロジーの恩恵は非常に大きいです。
私が知っている静的出力を実現するには 2 つの方法があります:
。y10k によって変更された phplib の template.inc.php というクラスを通じて実装されます。
. ob シリーズの関数を使用して実装されます。
最初の方法については、この記事で検討する問題ではないため、詳細は説明しません。
2 番目のメソッドの具体的な実装を見てみましょう:
例 4.
PHP コード
ob_start();//バッファを開きます
?>
PHP コードのすべての出力
$content = ob_get_contents();// php ページの内容を出力します
$fp = fopen("output00001.html", "w"); //ファイルを作成して書き込み用に開きます
fwrite($fp, $content); // php ページをoutput00001.htmlにコピーし、その後...
?>
この方法で、いわゆる静的テンプレートを簡単に実装できます...
2.
上記の例 4. は、最も単純なケースでは、書き込む前に $content を操作することもできます... 例 3 で説明した PHP 構文の強調表示など、いくつかのキーワードをキャプチャして再処理してみることもできます。個人的には、この関数がこの関数の最大のエッセンスだと思います。この関数はさまざまな問題を解決できますが、十分な想像力が必要です...
例 5.
PHP コード
ob_start();
$contents = ob_get_contents();
}else {
echo "エラー! 出力がありません"
}
return $contents;
;
上記の例はあまり役に立ちませんが、$code 自体が変数を含む出力ページであることが一般的です。この例では、$code 内の変数を置き換えるために eval が使用され、出力結果が再度取得されます。 ..
例 6. 転送を高速化する
PHP コード
/*
** タイトル.... .: PHP4 HTTP 圧縮により Web が高速化
** バージョン....: 1.20
** 著者.....: catoc
** ファイル名...: gzdoc.php
** 最終変更日: 18/10/2000
** 要件...: PHP4 >= 4.0.1
** PHP は -- で構成されましたwith- zlib[=DIR]
** 注....................: ダイナミック コンテンツ アクセラレーションは、
** オンザフライでデータ送信データを圧縮します
** コード by sun jin hu (catoc)
** 1998/1999 年以降のほとんどの新しいブラウザーには、基本的に「コンテンツ エンコーディング」として知られる HTTP 1.1
** 標準がサポートされています。ブラウザは
** サーバーに「コンテンツ エンコーディング」
** を受け入れることができることを示し、サーバーが対応できる場合は、データを
** 圧縮して送信します。
** ブラウザはそれを解凍してから
をレンダリングします。 ** ページ
**
** John Lim ([email]jlim@natsoft.com.my[/email]) によって変更されました
** Sandy McArthur, Jr のアイデアに基づいています
** 使用法.... . .:
** 最初の '' タグの先頭の前にスペースはありません。----------
* * |
** | include('gzdoc.php'); ? >
** |... ページ ...
** |

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
