PHP ob_clean()
下一篇: PHP四舍五入
关联文章:PHP详解ob_clean,ob_start和ob_get_contents函数
ob_clean 是 PHP 内置函数,用处很大,下面看下ob_clean()详细的定义和用法。
语法
ob_clean()
描述
ob_clean() 清空输出缓冲区的内容。默认配置下,php输出是先输出到缓冲区(output_buffering,内存区域),然后输送到浏览器。不过只要数据还没有真正发送到浏览器(严格来说是tcp buffer),那么还是有机会清空先前的缓冲区里面的数据,使用内置的ob_clean函数即可。注意:ob_clean 只是清空当前缓冲区的数据,如果先前输出的数据大于缓冲区,那么一部分数据已经发送,发送的这部分数据是无法清空的。另外如果禁用php输出缓冲区,那么 ob_clean 起不到任何效果的。
实例1:
<?php ob_start(); echo '输出缓冲..'; $str = ob_get_contents(); ob_clean(); echo '清除后再次设置。'; $str .= ob_get_contents(); ob_clean(); ob_end_flush(); echo $str; ?>
输出:
输出缓冲..清除后再次设置。
实例2:
<?php //输出1这个内容被写入缓冲区等待输出 echo 1; //清空缓存区的内容,之前缓冲区待输出的内容1被清除 ob_clean(); echo 2; ?>
最后结果输出:2
ob_clean()函数还经常用来解决图片不能正常生成的情况,当绘制图片时,如果在 header 函数之前有任何输出时,则不能正常生成图片,比如:
<?php echo 1; header("Content-type: image/png"); $img=imagecreatetruecolor(200,200); imagepng($img); imagedestroy($img);
像上面这样的代码,由于有缓冲区内有输出,则不能生成正常图片:
如果你用 ob_clean 函数清除缓冲区的内容,则可以正常输出图片:
<?php echo 1; //清除该代码之前缓冲区的内容,即1不会被输出 ob_clean(); header("Content-type: image/png"); $img=imagecreatetruecolor(200,200); imagepng($img); imagedestroy($img);
使用 ob_clean 函数后,图片正常输出:
造成这种情况的原因是,因为图片本身也是二进制的文件,前面有输出的话,相当于正常图片的前面会多出某些字节的内容,所以会出现错误。
本文地址:http://coderschool.cn/1963.html,转载请注明来源。
下一篇: PHP四舍五入