关于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 相关文章推荐
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
php strcmp使用说明
Apr 22 PHP
php中用foreach来操作数组的代码
Jul 17 PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
php两种无限分类方法实例
Apr 21 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
Yii实现显示静态页的方法
Apr 25 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 PHP
php使用自带dom扩展进行元素匹配的原理解析
May 29 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
关于js与php互相传值的介绍
2013/06/25 PHP
php中{}大括号是什么意思
2013/12/01 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
php上传大文件设置方法
2016/04/14 PHP
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
js实现查询商品案例
2020/07/22 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
Python批量查询域名是否被注册过
2017/06/21 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
使用Python读取大文件的方法
2018/02/11 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
英国香水店:The Perfume Shop
2017/03/27 全球购物
商务日语毕业生自荐信范文
2013/11/14 职场文书
工程总经理工作职责
2013/12/09 职场文书
校园十大歌手策划书
2014/02/01 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js