Содержимое этого внутреннего буфера может быть скопировано в строковую переменную с использованием функции ob_get_contents(). Для вывода содержимого этого внутреннего буфера следует использовать функцию ob_end_flush(). Функция ob_end_clean() уничтожает содержимое буфера.
В качестве единственного необязательного параметра может быть указана функция output_callback. Эта функция принимает строку как параметр и должна возвращать строку. Функция будет вызвана при вызове ob_end_flush(), или если буфер выводится в браузер в конце запроса. При вызове функции output_callback, она принимает содержимое буфера вывода как параметр и возвращает преобразованное содержимое, которое и отправляется в браузер.
Примечание: в PHP 4.0.4 ob_gzhandler() была введена для облегчения отправки gz-кодированных данных web-браузерам, поддерживающим сжатые web-страницы. ob_gzhandler() определяет тип кодировки содержимого, принимаемый браузером, и возвращает вывод соответствующим образом.
Буферы вывода помещаются в стэк, то есть допускается вызов функции ob_start(), после вызова другой функции ob_start(). Необходимо вызывать функцию ob_end_flush() соответствующее количество раз. Если актины несколько callback-функций, вывод последовательно фильтруется для каждой из них в порядке вложения.
Функции ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() и ob_start() не могут вызываться из callback-фукнции, так как их поведение не предсказуемо.
Пример кода
<?php
function callback($buffer)
{
// replace all the apples with oranges
return (str_replace("apples", "oranges", $buffer));
}
ob_start("callback");
?>
<body>
<p>It's like comparing apples to oranges.
</body>
</html>
Пример кода
<?php
ob_end_flush();
?>