关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解


Posted in PHP onJune 24, 2013

ob_get_contents();
ob_end_clean();
ob_start()

使用ob_start()把输出那同输出到缓冲区,而不是到浏览器。
然后用ob_get_contents得到缓冲区的数据。
ob_start()在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用echo ,输出都将被加入缓冲区中,直到程序运行结束或者使用ob_flush()来结束。然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。

函数ob_end_clean 会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容。
此时得用一个函数ob_get_contents()在ob_end_clean()前面来获得缓冲区的内容。
这样的话,能将在执行ob_end_clean()前把内容保存到一个变量中,然后在ob_end_clean()后面对这个变量做操作。

这是EG:
ob_start(); // buf1
echo ' multiple ';
ob_start(); // buf2
echo ' buffers work ';
$buf2 = ob_get_contents();
ob_end_clean();
$buf1 = ob_get_contents();
ob_end_clean();
echo $buf1;
echo '<br/>';
echo $buf2;
ob_get_contents

(PHP 4, PHP 5)
ob_get_contents -- Return the contents of the output buffer
Description
string ob_get_contents ( void )
This will return the contents of the output buffer or FALSE, if output buffering isn't active.
See also ob_start() and ob_get_length().
if you use ob_start with a callback function as a parameter, and that function changes ob string (as in example in manual) don't expect that ob_get_contents will return changed ob.
it will work as you would use ob_start with no parameter at all. So don't be confused.
transfer image, another method (alternative to fsockopen or function socket) :
server(192.168.0.1)
makeimage.php
...........
...........
$nameimage="xxxx.jpg"
$comand=exec("plotvelocity.sh $nameimage $paramater1 $paramater2");
ob_start();
readfile($nameimage);
$image_data = ob_get_contents();
ob_end_clean();
echo $image_data;
unlink($nameimage);
Client (192.168.0.2)
$bild="images/newimage2.gif";
$host="192.168.0.1";
$url=file_get_contents("http://$host/makeimage.php?$querystring");
$fp = fopen("$bild", 'wb');
fwrite($fp, $url);
fclose($fp);
echo '<img src="'.$bild.'">';
naturally you can transfer whichever thing and not only images
ob_get_clean

(PHP 4 >= 4.3.0, PHP 5)
ob_get_clean -- Get current buffer contents and delete current output buffer
Description
string ob_get_clean ( void )
This will return the contents of the output buffer and end output buffering. If output buffering isn't active then FALSE is returned. ob_get_clean() essentially executes both ob_get_contents() and ob_end_clean().

例子 1. A simple ob_get_clean() example

<?php
ob_start();
echo "Hello World";
$out = ob_get_clean();
$out = strtolower($out);
var_dump($out);
?>

Our example will output: string(11) "hello world"
See also ob_start() and ob_get_contents().
Notice that the function beneath does not catch errors, so throw in an @ before those ob_* calls
Running PHP4 < 4.3.0, you can simply add the following to use the function anyway:
<?php
if (!function_exists("ob_get_clean")) {
function ob_get_clean() {
$ob_contents = ob_get_contents();
ob_end_clean();
return $ob_contents;
}
}
?>
PHP 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
在PHP中读取和写入WORD文档的代码
Apr 09 PHP
PHP stream_context_create()作用和用法分析
Mar 29 PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
完整删除ecshop中获取店铺信息的API
Dec 24 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 #PHP
解析crontab php自动运行的方法
Jun 24 #PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 #PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 #PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
Jun 24 #PHP
PHP中的函数-- foreach()的用法详解
Jun 24 #PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 #PHP
You might like
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
MooTools 1.2介绍
2009/09/14 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
js原型链原理看图说明
2012/07/07 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
jQuery内容筛选选择器实例代码
2017/02/06 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
python如何删除列为空的行
2020/07/17 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
欢送会主持词
2015/07/01 职场文书
学校少先队工作总结
2015/08/12 职场文书
八年级物理教学反思
2016/02/19 职场文书
Python极值整数的边界探讨分析
2021/09/15 Python
关于mysql中string和number的转换问题
2022/06/14 MySQL