(PHP 4)
ob_start - включает буферизацию вывода. Описание
void ob_start ([string output_callback])
Эта функция включает буферизацию вывода. Если буферизация вывода активна,
никакой вывод скрипта не высылается (кроме шапок/headers); вывод сохраняется во внутреннем буфере.
Содержимое этого внутреннего буфера может быть скопировано в строковую переменную с использованием
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. Если вы вызовете их из
callback-функции, поведение не определено. Если вы хотите удалить
содержимое буфера, возвратите "" (нулевую строку) из callback.
Пример 1. Пользовательская callback-функция
<?php
function callback($buffer) {
// заменить все apples на oranges
return (ereg_replace("apples", "oranges", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>It's like comparing apples to oranges.
</body>
</html>
<?php
ob_end_flush();
?> | |
Даст:
<html>
<body>
<p>It's like comparing oranges to oranges.
</body>
</html> |
См. также ob_get_contents(),
ob_end_flush(),
ob_end_clean(),
ob_implicit_flush() и
ob_gzhandler(). |