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

How do you append something to the beginning of the output buffer?

For example, say you have the following code:

ob_start();

echo '<p>Start of page.</p>';
echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';

Before flushing the contents to the browser, how can I append something so that it appears before <p>Start of page.</p> when the page loads?

It sounds simple enough, like moving the pointer to the beginning of an array, but I couldn't find how to do it with the output buffer.

** 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>';

Use 2 ob_start commands and ob_end_flush() after what you want to first display then end the buffer with ob_end_flush again when you want to output the rest of the page.

eg:

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();

See the first parameter of ob_start (documentation here), it allows you to provide a callback to be called when the buffer is flushed or cleaned. It receives a string as a parameter and outputs a string, therefore it should be easy to

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

ob_start("writeCallback");

You can get content of buffer using ob_get_contents() function

ob_start();
echo "World! ";
$out1 = ob_get_contents();
echo "Hello, ".$out1;

Are you wanting it before any output at all? If so, then you're looking for the auto_prepend_file directive. http://php.net/manual/en/ini.core.php