php函数ob_start()、ob_get_clean()、ob_get_contents()实例代码

jerry PHP 2015年08月26日 收藏

下面3个函数的用法

  1.     ob_get_contents() - 返回输出缓冲区的内容
  2.     ob_flush() - 冲刷出(送出)输出缓冲区中的内容
  3.     ob_clean() - 清空(擦掉)输出缓冲区
  4.     ob_end_flush() - 冲刷出(送出)输出缓冲区内容并关闭缓冲
  5.     ob_end_clean() - 清空(擦除)缓冲区并关闭输出缓冲
  6.     flush() - 刷新输出缓冲 

通常是ob_flush();flush()同时一起使用
使用ob_start()把输出那同输出到缓冲区,而不是到浏览器。
然后用ob_get_contents得到缓冲区的数据。

函数ob_end_clean 会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容。
此时得用一个函数ob_get_contents()在ob_end_clean()前面来获得缓冲区的内容。
这样的话, 能将在执行ob_end_clean()前把内容保存到一个变量中,然后在ob_end_clean()后面对这个变量做操作。

php生成静态html实例

  1. <?php ob_start();?>
  2. <?php ob_implicit_flush(false);?>
  3. <div class="panel panel-default">
  4.     <div class="panel-heading">
  5.         <h3 class="panel-title">友情连接</h3>
  6.     </div>
  7.     <div class="panel-body">
  8. <?php $topUserMenus=Menu::model()->findAllByAttributes(array('status'=>BasicModel::STATUS_NORMAL,'parent_id'=>Menu::MENU_TYPE_6),
  9.                                 array('select'=>array('id','name','url','url2','content'),'limit'=>20,'order'=>'sort'));?>
  10. <?php foreach ($topUserMenus as $topUserMenu):?>
  11.         <a target="_blank" href="<?php echo $topUserMenu->url;?>" class="btn btn-sm btn-default"><?php echo $topUserMenu->name;?></a>
  12. <?php endforeach;?>
  13.     </div>
  14. </div>
  15. <?php $html_tr = ob_get_clean();?>
  16. <?php
  17. $base_path = Yii::app ()->basePath;
  18. file_put_contents ( $base_path . '/views/_static/_youqing.html', $html_tr );
  19. ?>

效果如图:

2015-08-26_131843.png