关于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代码
Mar 08 PHP
php入门学习知识点三 PHP上传
Jul 14 PHP
基于Zookeeper的使用详解
May 02 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
Jun 29 PHP
php中的动态调用实例分析
Jan 07 PHP
Laravel 5框架学习之表单
Apr 08 PHP
php 批量查询搜狗sogou代码分享
May 17 PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 PHP
Yii框架数据模型的验证规则rules()被执行的方法
Dec 02 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
PHP新手指南
Apr 01 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
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
php使用正则验证中文
2016/04/06 PHP
php生成与读取excel文件
2016/10/14 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
JavaScript中的事件处理
2008/01/16 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
Python实现的读写json文件功能示例
2018/06/05 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
高校毕业生自我鉴定
2013/10/27 职场文书
入党积极分子思想汇报范文
2014/01/05 职场文书
高校十八大报告感想
2014/01/27 职场文书
大学生创业策划书
2014/02/02 职场文书
公司业务员岗位职责
2014/03/18 职场文书
跳槽求职信范文
2014/05/26 职场文书
战友聚会策划方案
2014/06/13 职场文书
李强感恩观后感
2015/06/17 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
Python&Matlab实现樱花的绘制
2022/04/07 Python
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript