PHP 输出控制函数

PHP 提供了一组函数来控制将什么内容发送到浏览器以及何时发送。这称为输出控制

输出可以来自以下任何来源:

  • echo, print, printf , print_r...等类似的函数和语句
  • 来自 PHP 的通知、警告和错误
  • <?php ?> 标签之外的任何内容

PHP 和运行它的后端可能会将输出保存在缓冲区中,然后再将其发送给用户。

注释: 输出控制函数可以创建任意数量的输出缓冲区。 输出缓冲区捕获程序给出的输出。 每个新的输出缓冲区都放在一堆输出缓冲区的顶部,它提供的任何输出都将被它下面的缓冲区捕获。 输出控制函数只处理最顶层的缓冲区,因此必须删除最顶层的缓冲区才能控制它下面的缓冲区。

安装

PHP 输出控制函数是 PHP 核心的一部分。 无需安装即可使用这些功能。


运行时配置

输出控制函数的行为受php.ini中的设置影响:

名称 默认值 描述 版本
output_buffering "0" 默认为所有 PHP 文件启用输出缓冲 4
output_handler NULL 设置处理所有输出缓冲区输出的默认函数的名称 4
implicit_flush "0" 启用隐式刷新,这会导致在每个输出语句上将输出直接发送到浏览器 4
url_rewriter.tags "a=href,area=href,frame=src,form=,fieldset=" 指明哪些 HTML 标记和属性可以被 URL 重写器(output_add_rewrite_var() 函数)修改。 4.3
url_rewriter.hosts The current value of $_SERVER['HTTP_HOST'] 默认情况下,URL 重写只在服务器自己的 URL 上进行。要允许重写其他网站的 URL,请在此处设置其他网站的主机名。 7.1

PHP 输出控制函数

方法 函数
flush() 尝试将内容从系统的输出缓冲区发送到浏览器
ob_clean() 从最顶层的输出缓冲区中删除所有内容
ob_end_clean() 删除最顶层的输出缓冲区及其所有内容
ob_end_flush() 删除最顶层的输出缓冲区并输出其内容
ob_flush() 输出最顶层输出缓冲区的内容并清空缓冲区
ob_get_clean() 返回最顶层输出缓冲区的所有内容并清除缓冲区
ob_get_contents() 返回最顶层输出缓冲区的内容
ob_get_flush() 输出并返回最顶层输出缓冲区的内容,然后删除缓冲区
ob_get_length() 返回最高输出缓冲区中的数据字节数
ob_get_level() 返回一个数字,表示堆栈上有多少个输出缓冲区
ob_get_status() 返回有关输出缓冲区的信息
ob_gzhandler() 用作ob_start()的回调函数,在发送到浏览器时压缩缓冲区的内容
ob_implicit_flush() 打开或关闭隐式刷新
ob_list_handlers() 返回一个由最顶层输出缓冲区使用的回调函数名称数组
ob_start() 创建一个新的输出缓冲区并将其添加到栈顶
output_add_rewrite_var() 用于将查询字符串参数附加到输出中的任何 URL
output_reset_rewrite_vars() 删除所有由 output_add_rewrite_var() 添加的变量