WithCoderWithCoderWithCoder

PHP函数学习之输出控制系列函数ob_start()的使用

PHP的ob_start()函数,打开输出控制缓冲.

函数说明

      ob_start ([ callback $output_callback [, int $chunk_size [,bool $erase ]]] ): bool

此函数将打开输出缓冲.当输出缓冲激活后,脚本将不会输出内容(除http标头外),而是将要输出的内容被存储在内部缓冲区中.

内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中. 想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数.另外, 使用 ob_end_clean() 函数会自动丢弃掉缓冲区的内容.

参数

    output_callback

    可选参数,此函数把一个字符串当作参数并返回一个字符串. 当输出缓冲区被( ob_flush(), ob_clean() 或者相似的函数)输出或者被清除,或者在请求结束之际输出缓冲区内容被输出去到浏览器的时候该函数将会被调用.当调用 output_callback 时,它会输出缓冲区的内容作为参数并预期返回一个新的输出缓冲区对象,这个新返回的输出缓冲区内容将被输出到浏览器.如果这个 output_callback 不是一个可以调用的函数,此函数会返回 FALSE.

    如果回调函数有两个参数,第二个参数会由一个位域补充,该位域由 PHP_OUTPUT_HANDLER_START,PHP_OUTPUT_HANDLER_CONT 和 PHP_OUTPUT_HANDLER_END 组成.

    如果 output_callback 返回 FALSE ,其原来的输入 内容被直接送到浏览器.

    这个参数 output_callback 可以通过直接给一个 NULL 值而避开.

    不能从回调函数中调用ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() and ob_start(). 如果从回调函数中调用了它们,产生的行为是不明确的. 如果想要删除缓冲区的内容,从回调函数中返回一个"" (空字符串). 更不能从一个回调函数中使用像print_r($expression, true) 或highlight_file($filename, true) 一样的输出缓冲函数.

    注意:

    在PHP 4.0.4中, 引入ob_gzhandler() 是为了简化把gz编码过的数据发送到支持压缩网页的浏览器.ob_gzhandler() 会判断浏览器可以接受哪种类型的编码内容,从而返回相应的输出.

    chunk_size

    如果可选参数 chunk_size 被赋值了,在任何一个能引起缓冲区的长度等于 或超过 chunk_size 的输出操作后,缓冲区都会被刷新输出. 默认值 0,意味着函数仅在最后被调用,其余的特殊值可以将 chunk_size 从 1 设定到 4096.

    erase

    如果可选参数 erase 被赋成 FALSE,直到脚本执行完成缓冲区才被删除如果调用了输出和清除函数,会抛出一个“notice”,并返回 FALSE 值.

返回值

    成功时返回 TRUE, 或者在失败时返回 FALSE.

举例

    代码如下:

    1-2003032153339C.png

    以上代码会将输出内容在输出前,把所有的apples替换成oranges,最后的输出为:

        It's like comparing oranges to oranges.

欢迎分享交流,转载请注明出处:WithCoder » PHP函数学习之输出控制系列函数ob_start()的使用