4

你如何在输出缓冲区的开头附加一些东西?

例如,假设您有以下代码:

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>

这听起来很简单,就像将指针移动到数组的开头,但我找不到如何使用输出缓冲区来做到这一点。

4

5 回答 5

4

** 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>';
于 2012-11-26T19:14:13.837 回答
0

在要首先显示的内容之后使用 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();
于 2012-11-26T19:12:47.097 回答
0

请参阅(此处ob_start的文档)的第一个参数,它允许您提供在刷新清理缓冲区时调用的回调。它接收一个字符串作为参数并输出一个字符串,因此应该很容易

function writeCallback($buffer)
{
    return "Added before " . $buffer;
}

ob_start("writeCallback");
于 2012-11-26T19:13:30.593 回答
0

您可以使用ob_get_contents()函数获取缓冲区的内容

ob_start();
echo "World! ";
$out1 = ob_get_contents();
echo "Hello, ".$out1;
于 2012-11-26T19:15:35.517 回答
0

你在任何输出之前都想要它吗?如果是这样,那么您正在寻找该auto_prepend_file指令。 http://php.net/manual/en/ini.core.php

于 2012-11-26T19:16:30.203 回答