想问一下 ob_start();ob_get_contents();ob_end_clean();
此3个函数 具体有什么用 且什么情况下用这些函数

解决方案 »

  1.   

    翻版一下03年怪署黍的回答PHP4   的新函数介绍   -   输出信息控制函数  
     魔族精灵  
    这些函数可以让你控制你的脚本输出的内容.可以用于许多不同的情况,特别是在你的脚本已经输出信息后需要发送文件头新的情况.   输出控制函数不对使用   header()   或   setcookie()   发送的文件头信息产生影响,只对那些类似于   echo()   和   PHP   代码的数据块有作用.  例   1.   控制输出  <?php  ob_start();  
    echo   "Hello\n ";  setcookie   ( "cookiename ",   "cookiedata ");  ob_end_flush();  ?>  在上面的例子中,使用   echo()   的输出内容将会保存在输出缓冲区中,直到调用了   ob_end_flush().   这样做有意义的地方是,调用   setcookie()   的内容被成功的存储在   cookie   里面而不会引起错误.   (正常情况下,你不可以在有数据已经发送后再发送文件头信息到用户浏览器.)  相关函数   header()   and   setcookie().  韩数列表  
    flush   —   刷新输出缓冲区  
    保存在输出缓冲区的内容会被发送到浏览器  ob_start   —   打开输出缓冲区  
    这样所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面  ob_get_contents   —   返回输出缓冲区的内容  
    如果你想以后处理输出的内容,可以调用这个函数保留一个备份  ob_get_length   —   返回输出缓冲区的内容长度  ob_end_flush   —   结束(发送)输出缓冲区的内容,关闭输出缓冲区  ob_end_clean   —   删除(放弃)输出缓冲区的内容,关闭输出缓冲区  
    如果你的程序发现输出内容有问题,可以放弃所有输出内容,可以防止泄漏某些秘密信息  ob_implicit_flush   —   打开或关闭直接刷新  
    打开后,每个脚本输出都直接发送到浏览器,不再需要调用   flush(),   
      

  2.   

    ob_start(); // 开启缓冲区,之后的内容直到ob_end_clean(); ob_flush()等函数,不再输出echo 'hello,world';
    $clean_before = ob_get_contents();  // 获取缓冲区现有的内容
    echo 'hello,dog';ob_end_clean(); // 清除缓冲区内容并关闭,后面的代码照旧了echo 'clean_before is'. $clean_before;// 输出结果:
    //  clean_before is hello,world