array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.ob-start.php', 1 => 'ob_start', ), 'up' => array ( 0 => 'ref.outcontrol.php', 1 => 'Функции контроля вывода', ), 'prev' => array ( 0 => 'function.ob-list-handlers.php', 1 => 'ob_list_handlers', ), 'next' => array ( 0 => 'function.output-add-rewrite-var.php', 1 => 'output_add_rewrite_var', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/outcontrol/functions/ob-start.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
ob_start — Включает буферизацию вывода
$callback
= null
, int $chunk_size
= 0, int $flags
= PHP_OUTPUT_HANDLER_STDFLAGS
): boolФункция включает буферизацию вывода. Пока буферизация вывода активна, вывод из скрипта не отправляется, вместо этого вывод сохраняется во внутреннем буфере. В разделе «Какой вывод буферизуется?» рассказано, на какой именно вывод это влияет.
Буферы вывода помещаются в стек, поэтому функцию ob_start() разрешено вызывать, пока активен другой буфер. Если активировано несколько буферов вывода, вывод фильтруется последовательно через каждый из них в порядке вложенности. Подробнее об этом рассказано в разделе «Вложенные буферы вывода».
Подробное описание буферов вывода дано в разделе «Пользовательские буферы вывода».
callback
Можно задать необязательный параметр callback
(callable).
Чтобы обойти его, передают значение null
.
Параметр callback
вызывается,
когда буфер вывода сбрасывается (отправляется), очищается
или когда буфер вывода сбрасывается в конце скрипта.
Сигнатура callback
-функции:
buffer
phase
PHP_OUTPUT_HANDLER_*
.
Подробнее о флагах рассказано в разделе
«Флаги, передаваемые обработчикам вывода».
Если параметр callback
вернёт false
,
возвращается содержимое буфера.
Подробнее об этом рассказано в разделе
«Возвращаемые значения обработчика вывода».
Вызов любой из следующих функций из обработчика вывода выдаст фатальную ошибку: ob_clean(), ob_end_clean(), ob_end_flush(), ob_flush(), ob_get_clean(), ob_get_flush(), ob_start().
Подробнее о callback
-функциях (обработчиках вывода)
рассказано в разделах «Обработчики вывода»
и «Работа с обработчиками вывода».
chunk_size
Если передан необязательный параметр chunk_size
,
буфер будет сброшен после каждого блока кода,
размер буфера которого достиг или превысил
значение параметра chunk_size
.
Значение по умолчанию 0
означает,
что вывод буферизуется до тех пор, пока буфер не будет выключен.
Подробнее об этом рассказано в разделе «Размер буфера».
flags
Параметр flags
— это битовая маска, которая
управляет операциями, выполняемыми с буфером вывода.
По умолчанию разрешены очистка, сброс и удаление буферов вывода,
что разрешено устанавливать явно через
флаги управления буфером
.
Подробнее об этом рассказано в разделе «Операции, разрешённые для буферов».
Каждый флаг управляет доступом к набору функций, как описано ниже:
Константа | Функции |
---|---|
PHP_OUTPUT_HANDLER_CLEANABLE |
ob_clean() |
PHP_OUTPUT_HANDLER_FLUSHABLE |
ob_end_flush() |
PHP_OUTPUT_HANDLER_REMOVABLE |
ob_end_clean(), ob_end_flush(), ob_get_clean(), ob_get_flush() |
Возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Пример callback-функции, определённой пользователем
<?php
function callback($buffer)
{
// Заменить все яблоки апельсинами
return (str_replace("яблоки", "апельсины", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>Это всё равно, что сравнить яблоки и апельсины.</p>
</body>
</html>
<?php
ob_end_flush();
?>
Результат выполнения приведённого примера:
<html> <body> <p>Это всё равно, что сравнить апельсины и апельсины.</p> </body> </html>
Пример #2 Создание нестираемого буфера вывода
<?php
ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);
?>