关于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 相关文章推荐
信用卡效验程序
Oct 09 PHP
用PHP+MySql编写聊天室
Oct 09 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
php使用websocket示例详解
Mar 12 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
php中socket的用法详解
Oct 24 PHP
php转换颜色为其反色的方法
Apr 27 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 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/02/05 PHP
php实现微信发红包功能
2018/07/13 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
layUI实现列表查询功能
2019/07/27 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
浅析Python 引号、注释、字符串
2019/07/25 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
python getpass实现密文实例详解
2019/09/24 Python
python 实现兔子生兔子示例
2019/11/21 Python
python二元表达式用法
2019/12/04 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
Python里面search()和match()的区别
2016/09/21 面试题
小学社会实践活动总结
2014/07/03 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
发布会邀请函
2015/01/31 职场文书
个人自荐书范文
2015/03/09 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书