你如何在输出缓冲区的开头附加一些东西?
例如,假设您有以下代码:
ob_start();
echo '<p>Start of page.</p>';
echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';
在将内容刷新到浏览器之前,如何附加一些内容以使其在页面加载之前出现? <p>Start of page.</p>
这听起来很简单,就像将指针移动到数组的开头,但我找不到如何使用输出缓冲区来做到这一点。
你如何在输出缓冲区的开头附加一些东西?
例如,假设您有以下代码:
ob_start();
echo '<p>Start of page.</p>';
echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';
在将内容刷新到浏览器之前,如何附加一些内容以使其在页面加载之前出现? <p>Start of page.</p>
这听起来很简单,就像将指针移动到数组的开头,但我找不到如何使用输出缓冲区来做到这一点。
** PHP 5.3 **
ob_start(function($output) {
$output = '<p>Prepended</p>'.$output;
return $output;
});
echo '<p>Start of page.</p>';
echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';
** PHP < 5.3 **
function prependOutput($output) {
$output = '<p>Appended</p>'.$output;
return $output;
}
ob_start('prependOutput');
echo '<p>Start of page.</p>';
echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';
在要首先显示的内容之后使用 2 个 ob_start 命令和 ob_end_flush(),然后在要输出页面的其余部分时再次使用 ob_end_flush 结束缓冲区。
例如:
ob_start();
ob_start();
echo '<p>Start of page.</p>';
ob_end_flush();
echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';
ob_end_flush();
请参阅(此处ob_start
的文档)的第一个参数,它允许您提供在刷新或清理缓冲区时调用的回调。它接收一个字符串作为参数并输出一个字符串,因此应该很容易
function writeCallback($buffer)
{
return "Added before " . $buffer;
}
ob_start("writeCallback");
您可以使用ob_get_contents()函数获取缓冲区的内容
ob_start();
echo "World! ";
$out1 = ob_get_contents();
echo "Hello, ".$out1;
你在任何输出之前都想要它吗?如果是这样,那么您正在寻找该auto_prepend_file
指令。 http://php.net/manual/en/ini.core.php