php ob系列的函数
生活随笔
收集整理的這篇文章主要介紹了
php ob系列的函数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
<?php
/**
* Created by PhpStorm.
* User: nj
* Date: 16/11/26
* Time: 18:06
* Desc: ob系列的函數(shù),可能遇到的不多,我之前也沒(méi)注意過(guò),有用到的朋友可以看下
*/
### ob系列的函數(shù)使用場(chǎng)景
//ob的基本作用:
// 1)防止在瀏覽器有輸出之后再使用setcookie()、header()或session_start()等發(fā)送頭文件的函數(shù)造成的錯(cuò)誤。其實(shí)這樣的用法少用為好,養(yǎng)成良好的代碼習(xí)慣。
// 2)捕捉對(duì)一些不可獲取的函數(shù)的輸出,比如phpinfo()會(huì)輸出一大堆的html,但是我們無(wú)法用一個(gè)變量例如$info=phpinfo();來(lái)捕捉,這時(shí)候ob就管用了。
// 3)對(duì)輸出的內(nèi)容進(jìn)行處理,例如進(jìn)行g(shù)zip壓縮,例如進(jìn)行簡(jiǎn)繁轉(zhuǎn)換,例如進(jìn)行一些字符串替換。
// 4)生成靜態(tài)文件,其實(shí)就是捕捉整頁(yè)的輸出,然后存成文件。經(jīng)常在生成html,或者整頁(yè)緩存中使用。
//對(duì)于剛才說(shuō)的第三點(diǎn)中的gzip壓縮,可能是很多人想用,卻沒(méi)有真用上的,其實(shí)稍稍修改下代碼,就可以實(shí)現(xiàn)頁(yè)面的gzip壓縮。
//使用實(shí)例 ,借用知止的例子
ob_start(); //開(kāi)啟緩沖區(qū),就是打開(kāi)瓶子
echo 'once';
ob_flush(); //得到緩沖區(qū)的內(nèi)容,并輸出,就是把瓶子里的東西倒出來(lái)
echo 'twice';
$a = ob_get_contents(); //獲取緩沖區(qū)的內(nèi)容,需要顯式輸出,相當(dāng)于拿到緩沖區(qū)的東西,但是不給,等你要的時(shí)候才給你
var_dump($a); //打印,相當(dāng)于你問(wèn)我要瓶子里的東西,我就給你了
echo 'third';
$len = ob_get_length();//獲取緩沖區(qū)的數(shù)據(jù)長(zhǎng)度,相當(dāng)于數(shù)一下瓶子里還有幾顆糖,哈哈
$status = ob_get_status();//得到輸出緩沖區(qū)當(dāng)前的狀態(tài),相當(dāng)于看下瓶子有多大,已經(jīng)使用了多少容量,里邊有沒(méi)有小瓶子
var_dump($status);
$level = ob_get_level(); //得到當(dāng)前緩沖區(qū)的級(jí)別,好比是這是第幾層瓶子
var_dump($level);
var_dump($len);
ob_end_flush(); //輸出緩沖區(qū)的內(nèi)容,并關(guān)閉緩沖區(qū) 相當(dāng)于把瓶子里的東西都倒出來(lái),并把瓶子扔掉
echo 123;
$error = ob_get_contents();
var_dump($error); //這里會(huì)報(bào)錯(cuò),因?yàn)樯线吺褂昧薿b_end_flush,瓶子已經(jīng)扔掉了,再想要瓶子里的東西,不可能有了
ob_start();
echo 'test flush'; //不會(huì)被輸出
ob_clean(); //清空緩沖區(qū),相當(dāng)于把瓶子里的東西扔掉,單瓶子仍然保留
echo 'test after clean';
$con = ob_get_contents();//把瓶子里的東西保存下來(lái)了
ob_end_clean(); //清空緩沖區(qū),并關(guān)閉,相當(dāng)于把瓶子里的東西連同瓶子一起扔掉
var_dump($con);//由于東西被保存,在此可以打印出來(lái) 相當(dāng)于扔掉瓶子前,先把東西放到另一個(gè)地方了,還可以拿到
echo 'test after end_clean'; //不會(huì)被輸出
ob_flush(); //會(huì)報(bào)錯(cuò),因?yàn)樯线呉呀?jīng)使用了end關(guān)閉緩沖區(qū),相當(dāng)于瓶子被扔掉了,又想要里邊的東西倒出來(lái),已經(jīng)晚了,哈哈~~~
## 完整的ob系列函數(shù)附在下邊,需要的朋友可以看下
//flush(); //刷新輸出緩沖
//
//ob_clean(); //清空刷出緩沖區(qū)
//
//ob_get_clean(); //清空并關(guān)閉緩沖區(qū)
//
//ob_end_flush(); //輸出緩沖區(qū)內(nèi)容并刪除緩沖區(qū)
//
//ob_flush(); //輸出緩沖區(qū)的內(nèi)容
//
//ob_get_clean(); //得到當(dāng)前緩沖區(qū)的內(nèi)容并刪除緩沖區(qū)
//
//ob_get_contents(); //得到緩沖區(qū)的內(nèi)容
//
//ob_get_flush(); //輸出緩沖區(qū)內(nèi)容,并關(guān)閉緩沖區(qū)
//
//ob_get_length(); //返回緩沖區(qū)內(nèi)容的長(zhǎng)度
//
//ob_get_level(); //輸出緩沖機(jī)制的嵌套級(jí)別
//
//ob_get_status(); //得到所有輸出緩沖區(qū)的狀態(tài)
//ob_gzhandler(); //在ob_start中用來(lái)壓縮輸出緩沖區(qū)中的內(nèi)容時(shí)的回調(diào)函數(shù)
//
//ob_implicit_flush(); //打開(kāi)/關(guān)閉絕對(duì)刷送
//
//ob_list_handlers(); //列出所有使用中的輸出處理程序
//
//ob_start(); //打開(kāi)輸出緩沖控制
//
//output_add_rewrite_var(); //添加url重寫(xiě)器的值
//
//output_reset_rewrite_vars(); //重設(shè)url重寫(xiě)器的值
總結(jié)
以上是生活随笔為你收集整理的php ob系列的函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 浏览器趋势2016年9月:浏览器大战结束
- 下一篇: windows7环境下 硬盘安装ubun