OutputBuffer(输出缓冲)函数的妙用

在PHP编程中, 我们经常会遇到一些直接产生输出的函数, 如passthru(),readfile(), var_dump() 等. 但有时我们想把这些函数的输出导入到文件中,或者先经过处理再输出, 或者把这些函数的输出作为字符串来处理.
这时我们就要用到 Output Buffer(输出缓冲) 函数了.

处理输出缓冲的函数主要有这么几个:
ob_start() 开始输出缓冲, 这时PHP停止输出, 在这以后的输出都被转到一个内部的缓冲里.
ob_get_contents() 这个函数返回内部缓冲的内容. 这就等于把这些输出都变成了字符串.
ob_get_ length() 返回内部缓冲的长度.
ob_end_flush() 结束输出缓冲, 并输出缓冲里的内容. 在这以后的输出都是正常输出.
ob_end_clean() 结束输出缓冲, 并扔掉缓冲里的内容.
举个例子, var_dump()函数输出一个变量的结构和内容, 这在调试的时候很有用.
但如果变量的内容里有 < , > 等HTML的特殊字符, 输出到网页里就看不见了. 怎么办呢?
用输出缓冲函数能很容易的解决这个问题.
ob_start();
var_dump($var);
$out = ob_get_contents();
ob_end_clean();
这时var_dump()的输出已经存在 $out 里了. 你可以现在就输出:
echo '<pre>' . htmlspecialchars($out) . '</pre>' ;
或者等到将来, 再或者把这个字符串送到模板(Template)里再输出.

时间: 2024-08-08 00:06:18

OutputBuffer(输出缓冲)函数的妙用的相关文章

Output Buffer (输出缓冲)函数的妙用

函数 在PHP编程中, 我们经常会遇到一些直接产生输出的函数, 如passthru(),readfile(), var_dump() 等. 但有时我们想把这些函数的输出导入到文件中,或者先经过处理再输出, 或者把这些函数的输出作为字符串来处理. 这时我们就要用到 Output Buffer(输出缓冲) 函数了. 处理输出缓冲的函数主要有这么几个: ob_start() 开始输出缓冲, 这时PHP停止输出, 在这以后的输出都被转到一个内部的缓冲里. ob_get_contents() 这个函数返回

关于PHP输出缓冲函数的一些使用技巧

本文转自IT摆渡网欢迎转载,请标明出处 更多php文章请阅读 php问题解决 在PHP中, Output Buffer输出缓冲函数可以将一些直接产生输出的函数, 如passthru(),var_dump() 等的结果导入到文件中,或者经过处理再输出, 或者作为字符串来处理,在PHP中,处理输出缓冲的函数主要有以下几个: ob_start() 函数:开始输出缓冲, 此时PHP将停止输出, 在这之后的输出都被暂存在内部的缓冲里供以后使用. ob_get_contents() 函数:返回内部缓冲里的内

PHP输出缓冲控制Output Control系列函数详解

  这篇文章主要介绍了PHP输出缓冲控制Output Control系列函数详解,本文讲解了输出缓冲的简介.输出缓冲的作用.php.ini 中的相关配置项.Output Control 函数详解等内容,需要的朋友可以参考下 概述 以前研究过PHP的输入输出缓冲,不过博客搬家以后,原来文章找不到了,今天看到一篇好文,顺便转载过来. 简介 说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是

PHP输出缓冲控制Output Control系列函数详解_php实例

概述 以前研究过PHP的输入输出缓冲,不过博客搬家以后,原来文章找不到了,今天看到一篇好文,顺便转载过来. 简介 说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffer写满或者执行了保存操作,才会将数据写入磁盘.对于PHP来说,每一次像 echo 这样的输出操作,同样是先写入到了 php buffer 里,在脚本执行完毕或者执行了强制输出缓存操作,数据才会

PHP中输出缓冲

在PHP中,当执行echo,print的时候,输出并没有立即通过tcp传给客户端浏览器显示, 而是将数据写入php buffer.php output_buffering机制,意味在tcp buffer之前,建立了一新的队列,数据必须经过该队列.当一个php buffer写满的时候,脚本进程会将php buffer中的输出数据交给系统内核交由tcp传给浏览器显示.所以,数据会依次写到这几个地方echo/pring -> php buffer -> tcp buffer -> browse

关于输出缓冲的讨论(Output buffering)之一

###########################################标题  关于输出缓冲的讨论##整理  Diego Lynn @ 林全国##原作  By Zeev Suraski ######################################### 关于输出缓冲的讨论(Output buffering) 目录 HTTP Header为什么要使用Output Buffering技术Output Buffering的工作原理基本用法高级用法使事情更为简单哈哈,我成功

PHP嵌套输出缓冲代码实例

  这篇文章主要介绍了PHP嵌套输出缓冲代码实例,本文讲解嵌套使用ob系列函数的实例,需要的朋友可以参考下 PHP的输出缓存是可以嵌套的.用ob_get_level()就可以输出嵌套级别. 测试发现在cli和浏览器下输出结果不一样(PHP5.4). 手册说明如下: ob_get_level() will always return 0 inside a destructor. This happens because the garbage collection for output buffe

PHP 输出缓冲控制(Output Control)详解_php技巧

  php 缓冲简介       其实我对php ob 系列印象还是很模糊,具体怎么玩的,还不是很了解,平时curd,确实对这些内容没有深入.作为phper 甚是惭愧.网上搜了一通,互相copy,代码运行不能出现作者所描述现象,本文良心出品,代码都是作者运行过.   当执行输出的时候,比如 echo,print.输出并没有立即送给 web server, 而是将数据写入 php buffer.php output_buffering 机制好处当然提升性能.其实 php 文件最终在浏览器上显示,走

剖析 PHP 中的输出缓冲_php技巧

我们先来看一段代码:     〈?php     for ($i=10; $i〉0; $i--)     {      echo $i;      flush();      sleep(1);     }     ?〉     按照php手册里的说法,该函数将当前为止程序的所有输出发送到用户的浏览器.     上面的这段代码,应该隔一秒钟输出一次$i.但是实际中却不一定是这样.有可能是等了10秒钟后,所有的输出同时呈现出来.     好,我们来改一下这段代码,改成     〈?php