php ob系列的函数

<?php
/**
 * Created by PhpStorm.
 * User: nj
 * Date: 16/11/26
 * Time: 18:06
 * Desc: ob系列的函数,可能遇到的不多,我之前也没注意过,有用到的朋友可以看下
 */

### ob系列的函数使用场景
//ob的基本作用:
//  1)防止在浏览器有输出之后再使用setcookie()、header()或session_start()等发送头文件的函数造成的错误。其实这样的用法少用为好,养成良好的代码习惯。
//  2)捕捉对一些不可获取的函数的输出,比如phpinfo()会输出一大堆的html,但是我们无法用一个变量例如$info=phpinfo();来捕捉,这时候ob就管用了。
//  3)对输出的内容进行处理,例如进行gzip压缩,例如进行简繁转换,例如进行一些字符串替换。
//  4)生成静态文件,其实就是捕捉整页的输出,然后存成文件。经常在生成html,或者整页缓存中使用。
//对于刚才说的第三点中的gzip压缩,可能是很多人想用,却没有真用上的,其实稍稍修改下代码,就可以实现页面的gzip压缩。


//使用实例 ,借用知止的例子

ob_start(); //开启缓冲区,就是打开瓶子

echo 'once';

ob_flush(); //得到缓冲区的内容,并输出,就是把瓶子里的东西倒出来

echo 'twice';

$a = ob_get_contents(); //获取缓冲区的内容,需要显式输出,相当于拿到缓冲区的东西,但是不给,等你要的时候才给你
var_dump($a); //打印,相当于你问我要瓶子里的东西,我就给你了

echo 'third';
$len = ob_get_length();//获取缓冲区的数据长度,相当于数一下瓶子里还有几颗糖,哈哈

$status = ob_get_status();//得到输出缓冲区当前的状态,相当于看下瓶子有多大,已经使用了多少容量,里边有没有小瓶子
var_dump($status);

$level = ob_get_level(); //得到当前缓冲区的级别,好比是这是第几层瓶子
var_dump($level);

var_dump($len);
ob_end_flush(); //输出缓冲区的内容,并关闭缓冲区 相当于把瓶子里的东西都倒出来,并把瓶子扔掉

echo 123;

$error = ob_get_contents();
var_dump($error); //这里会报错,因为上边使用了ob_end_flush,瓶子已经扔掉了,再想要瓶子里的东西,不可能有了

ob_start();
echo 'test flush'; //不会被输出

ob_clean(); //清空缓冲区,相当于把瓶子里的东西扔掉,单瓶子仍然保留

echo 'test after clean';

$con = ob_get_contents();//把瓶子里的东西保存下来了

ob_end_clean(); //清空缓冲区,并关闭,相当于把瓶子里的东西连同瓶子一起扔掉

var_dump($con);//由于东西被保存,在此可以打印出来 相当于扔掉瓶子前,先把东西放到另一个地方了,还可以拿到

echo 'test after end_clean'; //不会被输出

ob_flush(); //会报错,因为上边已经使用了end关闭缓冲区,相当于瓶子被扔掉了,又想要里边的东西倒出来,已经晚了,哈哈~~~


## 完整的ob系列函数附在下边,需要的朋友可以看下

//flush(); //刷新输出缓冲
//
//ob_clean();  //清空刷出缓冲区
//
//ob_get_clean(); //清空并关闭缓冲区
//
//ob_end_flush(); //输出缓冲区内容并删除缓冲区
//
//ob_flush();  //输出缓冲区的内容
//
//ob_get_clean(); //得到当前缓冲区的内容并删除缓冲区
//
//ob_get_contents(); //得到缓冲区的内容
//
//ob_get_flush(); //输出缓冲区内容,并关闭缓冲区
//
//ob_get_length(); //返回缓冲区内容的长度
//
//ob_get_level(); //输出缓冲机制的嵌套级别
//
//ob_get_status(); //得到所有输出缓冲区的状态

//ob_gzhandler(); //在ob_start中用来压缩输出缓冲区中的内容时的回调函数
//
//ob_implicit_flush(); //打开/关闭绝对刷送
//
//ob_list_handlers(); //列出所有使用中的输出处理程序
//
//ob_start(); //打开输出缓冲控制
//
//output_add_rewrite_var(); //添加url重写器的值
//
//output_reset_rewrite_vars(); //重设url重写器的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值