关于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 09 PHP
php empty函数 使用说明
Aug 10 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
php中cookie的使用方法
Mar 29 PHP
PHP操作MySQL事务实例
Nov 05 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
Java中final关键字详解
Aug 10 PHP
php实现可运算的验证码
Nov 10 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
如何让PHP编码更加好看利于阅读
May 12 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&amp;mysql(六)
2006/10/09 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
原生js实现轮播图
2017/02/27 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
Python利用IPython提高开发效率
2016/08/10 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
Django nginx配置实现过程详解
2020/09/10 Python
美国保健品专家:Life Extension
2018/05/04 全球购物
高三自我鉴定
2013/10/23 职场文书
国际贸易专业推荐信
2013/11/15 职场文书
店长岗位职责
2013/11/21 职场文书
暑期工社会实践报告
2015/07/13 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
详解SQL的窗口函数
2022/04/21 Oracle