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

jerry PHP 2015年08月26日 收藏

下面3个函数的用法

    ob_get_contents() - 返回输出缓冲区的内容
    ob_flush() - 冲刷出(送出)输出缓冲区中的内容
    ob_clean() - 清空(擦掉)输出缓冲区
    ob_end_flush() - 冲刷出(送出)输出缓冲区内容并关闭缓冲
    ob_end_clean() - 清空(擦除)缓冲区并关闭输出缓冲
    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实例

<?php ob_start();?>
<?php ob_implicit_flush(false);?>
<div class="panel panel-default">
    <div class="panel-heading">
        <h3 class="panel-title">友情连接</h3>
    </div>
    <div class="panel-body">
<?php $topUserMenus=Menu::model()->findAllByAttributes(array('status'=>BasicModel::STATUS_NORMAL,'parent_id'=>Menu::MENU_TYPE_6),
                                array('select'=>array('id','name','url','url2','content'),'limit'=>20,'order'=>'sort'));?>
<?php foreach ($topUserMenus as $topUserMenu):?>
        <a target="_blank" href="<?php echo $topUserMenu->url;?>" class="btn btn-sm btn-default"><?php echo $topUserMenu->name;?></a>
<?php endforeach;?>
    </div>
</div>
<?php $html_tr = ob_get_clean();?>
<?php
$base_path = Yii::app ()->basePath;
file_put_contents ( $base_path . '/views/_static/_youqing.html', $html_tr );
?>

效果如图:

2015-08-26_131843.png