如何将某些内容添加到PHP输出缓冲区的开头?

时间:2012-11-26 19:07:24

标签: php output-buffering

如何将某些内容附加到输出缓冲区的开头

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

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>之前显示

这听起来很简单,比如将指针移动到数组的开头,但我无法找到如何使用输出缓冲区。

5 个答案:

答案 0 :(得分: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&lt; 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>';

答案 1 :(得分: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();

答案 2 :(得分:0)

查看ob_start的第一个参数(文档here),它允许您在缓冲区刷新清理<时提供要回调的回调/ strong>即可。它接收一个字符串作为参数并输出一个字符串,因此它应该很容易

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

ob_start("writeCallback");

答案 3 :(得分:0)

您可以使用ob_get_contents()函数

获取缓冲区的内容
ob_start();
echo "World! ";
$out1 = ob_get_contents();
echo "Hello, ".$out1;

答案 4 :(得分:0)

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