検索
ホームページphp教程php手册php输出控制的学习笔记

php输出控制只影响到echo输出不会影响到位cookie,session,header这些函数了,下面来看下本文章.

1、简介

当PHP脚本有输出时,输出控制函数可以用这些来控制输出,这在多种不同情况中非常有用,尤其是用来在脚本开始输出数据后,发送http头信息到浏览器,输出控制函数不影响由 header()或setcookie()发送的文件头信息,仅影响像echo这样的函数和PHP代码块间的数据。

2、作用

1)、如官方介绍说,为了避免在输出文件头信息如header()和setcookie()之前出现输出而发生的错误,可以使用输出缓存函数,如下代码:

<?php  
	    ob_start();   //打开缓存控制函数 
	    echo &#39;hello&#39;; 
	    header(&#39;Location: http://www.phprm.com/&#39;); 
	

2)、将输出内容放入缓存区,如需进行其他操作,如将输出写入缓存文件,可将缓冲区内容写入缓存文件,然后输出,代码如下:

	      ob_start(); 
	   echo 'hello'; 
	   $file = ob_get_contents(); 
	   ob_end_clean(); 
	   write_cache($file);    //将缓冲区内容写入缓存函数,实现细节省略

3)、获取某些无返回值内置函数的输出内容,如phpinnfo();代码如下:

<?php 
	ob_start(); 
	phpinfo(); 
	$file = ob_get_contents();   //phpinfo()输出内容 
	ob_end_clean(); 
	

4)、在使用框架的时候,我们会发现框架中会将输出缓冲然后进行变量替换,最后输出.

除了这些内容,我们还可以利用输出缓存进行错误处理,具体看代码,我们可以将错误信息获取,以更加友好的方式输出,代码如下:

<?php 
	function display_error() 
	{ 
	 if($errors = error_get_last()) 
	 { 
	  return var_export($errors , TRUE); 
	 } 
	 return FALSE; 
	} 
	 
	$dis_error = &#39;display_error&#39;; 
	 
	//$a = 3; 
	 
	ob_start( $dis_error ); 
	 
	echo $a; 
	

附:ob_start()官方解释:

bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )

此函数将打开输出缓冲,当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中.

内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中,想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数,另外,使用 ob_end_clean() 函数会静默丢弃掉缓冲区的内容.

output_callback

可选参数 output_callback 函数可以被指定,此函数把一个字符串当作参数并返回一个字符串,当输出缓冲区被( ob_flush(),ob_clean() 或者相似的函数)冲刷(送出)或者被清洗的时候,或者在请求结束之际输出缓冲区内容被冲刷到浏览器的时候该函数将会被调用,当调用 output_callback 时,它将收到输出缓冲区的内容作为参数 并预期返回一个新的输出缓冲区作为结果,这个新返回的输出缓冲区内容将被送到浏览器,如果这个 output_callback 不是一个可以调用的函数,此函数 会返回 FALSE.

如果回调函数有两个参数,第二个参数会由一个位域补充,该位域由 PHP_OUTPUT_HANDLER_START, PHP_OUTPUT_HANDLER_CONT 和 PHP_OUTPUT_HANDLER_END 组成.

如果 output_callback 返回 FALSE,其原来的输入内容被直接送到浏览器。

这个参数 output_callback 可以通过直接给一个 NULL 值而避开。

ob_end_clean(), ob_end_flush(),ob_clean(), ob_flush() and ob_start() 不能从一个回调函数中调用,如果从回调函数中调用了它们,产生的行为是不明确的,如果想要删除缓冲区的内容,从回调函数中返回一个”" (空字符串),更不能从一个回调函数中使用像print_r($expression,true) 或highlight_file($filename,true) 一样的输出缓冲函数.


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境