php函数ob_start()、ob_end_clean()、ob_get_contents()

文章介绍了php函数ob_start()、ob_end_clean()、ob_get_contents(),有需要的朋友可参考一下.

下面3个函数的用法

ob_get_contents() - 返回输出缓冲区的内容

ob_get_contents(PHP 4, PHP 5)

ob_get_contents — 返回输出缓冲区的内容

说明

string ob_get_contents ( void )

只是得到输出缓冲区的内容,但不清除它.

返回值

此函数返回输出缓冲区的内容,或者如果输出缓冲区无效将返回FALSE .

实例代码如下:

  1. Example #1 A simple ob_get_contents() example
  2. ob_start();
  3. echo "Hello ";
  4. $out1 = ob_get_contents();
  5. echo "World";
  6. $out2 = ob_get_contents();
  7. ob_end_clean();
  8. var_dump($out1, $out2);
  9. ?>

以上例程会输出:

string(6) "Hello "

string(11) "Hello World"

ob_flush() - 冲刷出(送出)输出缓冲区中的内容

ob_flush

(PHP 4 >= 4.2.0, PHP 5)

ob_flush — 冲刷出(送出)输出缓冲区中的内容

说明

void ob_flush ( void )

这个函数将送出缓冲区的内容(如果里边有内容的话).如果想进一步处理缓冲区中的内容,必须在ob_flush()之前调用ob_get_contents() ,因为在调用ob_flush()之后缓冲区内容将被丢弃.

此函数不会销毁输出缓冲区,而像ob_end_flush() 函数会销毁缓冲区.

返回值

没有返回值.

ob_clean() - 清空(擦掉)输出缓冲区

ob_clean

(PHP 4 >= 4.2.0, PHP 5)

ob_clean — 清空(擦掉)输出缓冲区

说明

void ob_clean ( void )

此函数用来丢弃输出缓冲区中的内容.

此函数不会销毁输出缓冲区,而像 ob_end_clean() 函数会销毁输出缓冲区.

返回值

没有返回值.

ob_end_flush() - 冲刷出(送出)输出缓冲区内容并关闭缓冲

ob_end_flush — 冲刷出(送出)输出缓冲区内容并关闭缓冲

说明

bool ob_end_flush ( void )

这个函数将送出最顶层缓冲区的内容(如果里边有内容的话),并关闭缓冲区.如果想进一步处理缓冲区中的内容,必须在ob_end_flush()之前调用 ob_get_contents(),因为在调用ob_end_flush()后缓冲区内容被丢弃.

Note: 这个函数与ob_get_flush()相似,不同的是ob_get_flush()会把缓冲区中的内容作为字符串返回.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE. 错误的原因首先是,在调用时没有一个起作用的缓冲区,或者是因为某些原因缓冲区不能被删除(可能对特殊缓冲区而言).

错误/异常

如果函数失败了,将引发一个E_NOTICE异常.

更新日志

版本 说明

4.2.0 添加了布尔返回值.

Example #1 ob_end_flush() example

下面的例子给出了一种送出缓冲区内容并关闭所有输出缓冲区的容易的方法:

实例代码如下:

  1. while (@ob_end_flush());
  2. ?>

ob_end_clean() - 清空(擦除)缓冲区并关闭输出缓冲

ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲

说明

bool ob_end_clean ( void )

此函数丢弃最顶层输出缓冲区的内容并关闭这个缓冲区.如果想要进一步处理缓冲区的内容,必须在ob_end_clean()之前调用ob_get_contents(),因为当调用ob_end_clean()时缓冲区内容将被丢弃.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE. 错误的原因首先是,在调用时没有一个起作用的缓冲区,或者是因为某些原因缓冲区不能被删除(可能对特殊缓冲区而言).

错误/异常

如果函数失败了,将引发一个E_NOTICE异常.

更新日志

版本 说明

4.2.0 添加了布尔返回值.

下面的例子给出了一种去除所有输出缓冲区的方法:

实例代码如下:

  1. Example #1 ob_end_clean() example
  2. ob_start();
  3. echo 'Text that won't get displayed.';
  4. ob_end_clean();
  5. ?>

flush() - 刷新输出缓冲    

通常是ob_flush();flush()同时一起使用

使用ob_start()把输出那同输出到缓冲区,而不是到浏览器.

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

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

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

此时得用一个函数ob_get_contents()在ob_end_clean()前面来获得缓冲区的内容.

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