宗小宗-PHP程序猿

欢迎各位朋友前来,如果我的文章中有不对的地方,还望指正;如需转载,请注明原处

PHP之输出控制 ob_start(),ob_get_contents(),ob_end_clean()

1.常用函数

  ob_start();#打开输出缓冲区

  ob_get_contents();#获取缓冲区内容

  ob_get_length();#获取缓冲区内容长度

  ob_clean();#清除之前的所有输出内容

  ob_end_clean();#清除缓冲区内容并且关闭缓冲区,和ob_clean()差不多吧,不太了解真正的区别,但是有人建议使用这个函数

  ob_flush();#冲刷出缓冲区内容,必须在此函数之前使用ob_get_contents()

  ob_get_clean();#实质上是ob_get_contents()和ob_end_clean()一起使用

 

2.通常ob_start(),ob_get_contents(),ob_end_clean()一起使用

<?php
echo 'This is A';

ob_end_clean();

ob_start();

echo 'This is B';

$str = ob_get_contents();
$len = ob_get_length();

ob_end_clean();

echo $str.PHP_EOL;
echo 'The length of buffer is '.$len.PHP_EOL;

 

 

3.使用ob_end_clean()时最好判断有没有缓存内容,否则会下面的错误

1 <?php
2 error_reporting(E_ALL);
3 
4 ob_end_clean();
5 
6 ob_end_clean();

 

Notice: ob_end_clean(): failed to delete buffer. No buffer to delete in /Users/zongshuai/bhu/ceshi/ceshi.php on line 6

解决办法 在ob_end_clean()前面先判断一下,例如 if(ob_get_length()) ob_end_clean(); 或者 if(ob_get_contents()) ob_end_clean();

 

posted @ 2016-08-04 11:31  宗小宗  阅读(618)  评论(0编辑  收藏  举报