php之ob_start()缓冲区

ob_get_contents()函数及与其相关几个函数的用法

ob_start()

ob_get_contents(); 获取缓冲区内容,如果是纯 html内容或标签,则都会放于浏览器的缓冲区中。

                            如果将ob_get_contents()获取到的缓冲区的内容赋给一个文件,则缓冲区里的内容会覆盖文件里之前的内容

ob_end_clean():删除内部缓冲区的内容,并且关闭内部缓冲区[删除运行ob_end_clean()此函数 之前的所有echo print_r输出到缓冲区的内容;删除ob_end_clean()此函数 之前的html内容或标签;定义的变量依然存在]

ob_end_flush() 发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区

ob_get_length() 返回内部缓冲区的长度。

Flush():刷新缓冲区的内容,输出。

 

ob_end_clean();

 

使用ob_start()把echo或print等输出的内容输至缓冲区,而不是到浏览器。

然后用ob_get_contents得到缓冲区的数据。

ob_start()在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用任意个echo 等输出,输出都将被加入缓冲区中,直到程序运行结束或者使用ob_flush()来结束。然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。

 

函数ob_end_clean() 会清除缓冲区的内容.(并将缓冲区关闭,但不会输出内容。)

此时在使用ob_end_clean()之前使用函数ob_get_contents()来获得缓冲区的内容。

这样的话, 能将在执行ob_end_clean()前把内容保存到一个变量中,然后在ob_end_clean()后面对这个变量做操作。

1 <?php
2 ob_start();
3 echo 'aaaa<br />'; //保存至缓存区
4 $c = 'ccc';
5 echo $c; //保存至缓存区 
6 $d = ob_get_contents();
7  //程序结束输出以上echo在缓存中的内容
8 ?>
1 <?php
2 ob_start();
3 $a = 'aaaa<br />';
4 $b = ob_get_contents();
5 echo $b;
6  //程序结束没有任何输出,因为虽然开启了缓冲,但是缓冲区里没有被输出内容
7 ?>

 

原文地址:https://www.cnblogs.com/xccjmpc/p/3586208.html