PHP中的ob_start() 的使用

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

处理输出缓冲的函数主要有这么几个:

ob_start() 开始输出缓冲, 这时PHP停止输出,
在这以后的输出都被转到一个内部的缓冲里.

ob_get_contents() 这个函数返回内部缓冲的内容.
这就等于把这些输出都变成了字符串.

ob_get_ length() 返回内部缓冲的长度.

ob_end_flush()
结束输出缓冲, 并输出缓冲里的内容. 在这以后的输出都是正常输出.

ob_end_clean() 结束输出缓冲, 并扔掉缓冲里的内容.

举个例子:

define(‘ob_start‘,true);
if(ob_start){
  echo ‘<p>start is
ok</p>‘.‘<br>‘;
}
echo
‘sunzhiyan‘.‘<br>‘;

//var_dump($var);
$out =
ob_get_contents();
ob_end_clean();

ob_end_flush();
echo ‘<pre>‘.$out.‘</pre>‘ ;

这里我们只有通过最后的输出$out,才能能到前面的输出结果

start is ok


sunzhiyan

这里值得注意的问题是,你的输出必须在缓冲结束后,才能够输出,在没有结束的情况下,你输出的时候,该输出只是再次的添加到输出缓冲里面而已,只有再次的用ob_get_contents()
函数返回存入到输出缓冲里面的内容,才能得到需要输出的值

PHP中的ob_start() 的使用,布布扣,bubuko.com

时间: 2024-12-15 16:35:26

PHP中的ob_start() 的使用的相关文章

PHP中的ob_start用法详解

用PHP的ob_start();控制您的浏览器cache Output Control 函数可以让你自由控制脚本中数据的输出.它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况.输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用.我们先举一个简单的例子,让大家对Output Control有一个大致的印象:Example 1. 程序代码 程序代码<?phpob_start(

PHP中的ob_start用法

Example 1. 程序代码 程序代码<?phpob_start(); //打开缓冲区echo \"Hellon\"; //输出header("location:index.php"); //把浏览器重定向到index.phpob_end_flush();//输出全部内容到浏览器?> 所有对header()函数有了解的人都知道,这个函数会发送一段文件头给浏览器,但是如果在使用这个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会提示出错.

(转)PHP中的ob_start用法详解

用PHP的ob_start();控制您的浏览器cache Output Control 函数可以让你自由控制脚本中数据的输出.它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况.输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用.我们先举一个简单的例子,让大家对Output Control有一个大致的印象:Example 1. 程序代码 程序代码<?phpob_start(

【转】php缓冲 output_buffering和ob_start

原文: http://blog.csdn.net/21aspnet/article/details/7389427 php缓冲 output_buffering和ob_start buffer buffer是一个内存地址空间,Linux系统默认大小一般为4096(4kb),即一个内存页.主要用于存储速度不同步的设备或者优先级不同的设备之间传办理数据的区域.通过buffer,可以使进程这间的相互等待变少.这里说一个通俗一点的例子,你打开文本编辑器编辑一个文件的时候,你每输入一个字符,操作系统并不会

优化Web网站性能

一.前端优化 网站性能优化是一个很综合的话题,涉及到服务器的配置和网站前后端程序等各个方面,我只是从实际经历出发,分享一下自己所尝试过的网站性能优化方法.之所以在标题上挂一个web2.0,是因为本文更偏重于中小网站的性能优化,我所使用的系统也是典型web2.0的LAMP架构. 首先讲讲前端的优化,用户访问网页的等待时间,有80%是发生在浏览器前端,特别是页面和页面中各种元素(图片.CSS.Javascript. flash…)的下载之上.因此在很多情况下,相对于把大量的时间花在艰苦而繁杂的程序改

PHP-php.ini中文版

今天细看了下配置文件 有很多没用过的 就从网上搜了一篇 常看看 ;;;;;;;;;;;;;;;; 简介 ;;;;;;;;;;;;;;;;; 本文并非是对英文版 php.ini 的简单翻译,而是参考了众多资料以后,结合自己的理解,增加了许多内容,; 包括在原有 php.ini 基础上增加了一些实用模块的配置说明,同时对文件内容的安排进行了调整.; 由于作者不喜欢 no-free 的玩意儿,所以删除了除 MySQL 和 PostgreSQL 以外的其他数据库模块配置选项. ;;;;;;;;;;;;;

php加載語言包

在languagebag.php中 <?php ob_start(); include_once 'template/index.html'; //加载模板文件,并执行里面的php指令 $str = ob_get_contents(); ob_clean(); $zh_arr = array( //中文语言包 'name'        => '姓名', 'address'    => '地址', 'date'        => '日期'     ); $en_arr = arr

PHP缓存机制Output Control详解

这篇文章主要介绍了PHP缓存机制Output Control,需要的朋友可以参考下 在php5.2版本的配置中,默认output_buffering为关闭状态,因此运行下面三行代码将会出现一个警告: Warning: Cannot modify header information - headers already sent echo 'hello1'; header('content-type:text/html;charset=utf-8'); echo 'hello2'; 开启OB缓存的

opencart源码解析之 index.php

//访问index.php,安全过滤.加载配置文件.核心启动文件.函数库.类库 //转载请注明: http://blog.csdn.net/dabao1989/article/details/21223585 //new注册表 $registry = new Registry(); //$registry里保存的config是根据当前店店铺(`oc_store`)获取`store_id`,然后到`oc_setting`里取出该店的配置信息,跟配置文件config.php无关 $query = $