关于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 相关文章推荐
PHP数据类型之布尔型的介绍
Apr 28 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
PHP 如何利用phpexcel导入数据库
Aug 24 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
php实现图片等比例缩放代码
Jul 23 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
Laravel实现autoload方法详解
May 07 PHP
php多文件打包下载的实例代码
Jul 12 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 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
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
python中selenium库的基本使用详解
2020/07/31 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
C语言50道问题
2014/10/23 面试题
工程造价自荐信
2013/10/09 职场文书
黄金搭档广告词
2014/03/21 职场文书
经典演讲稿开场白
2014/08/25 职场文书
《观潮》教学反思
2016/02/17 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android