关于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 VS ASP
Oct 09 PHP
记录mysql性能查询过程的使用方法
May 02 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
May 08 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
Yii调试SQL的常用方法
Jul 09 PHP
php rsa加密解密使用详解
Jan 14 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
php创建类并调用的实例方法
Sep 25 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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中eval函数的危害与正确禁用方法
2014/06/30 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
一段实用的php验证码函数
2016/05/19 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
打造完美自荐信
2014/01/24 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
自查自纠工作总结
2014/10/15 职场文书
财务人员个人工作总结
2015/02/27 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书