Включает буферизацию вывода

# ob_start

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_start — Включает буферизацию вывода

### Описание

function ob_start(?callable `$callback` = `null`, int `$chunk_size` = 0, int `$flags` = `PHP_OUTPUT_HANDLER_STDFLAGS`): bool

Функция включает буферизацию вывода. Пока буферизация вывода активна, вывод из скрипта не отправляется, вместо этого вывод сохраняется во внутреннем буфере. Раздел «Какой вывод буферизуется?» рассказывает, на какой именно вывод это влияет.

Буферы вывода помещаются в стек, поэтому функцию ob_start() разрешается вызывать при другом активном буфере. Если активировали несколько буферов вывода, вывод фильтруется последовательно через каждый из буферов в порядке вложенности. Подробнее об этом рассказывает раздел «Вложенные буферы вывода».

Подробное описание буферов вывода даёт раздел «Пользовательские буферы вывода».

### Список параметров

`callback`

  Параметр `callback` принимает необязательный аргумент с типом callable. Когда требуется, чтобы при вызове с аргументами функция не вызывала callback-функцию, в параметр передают значение `null`.

  Функция, которую передали в параметр `callback`, вызывается при вызове функций сброса (отправки) или очистки буфера вывода, или при сбросе буфера вывода в конце скрипта.

  Сигнатура `callback`-функции:

  function handler(string `$buffer`, int `$phase` = ?): string
  `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_flush()
  `PHP_OUTPUT_HANDLER_REMOVABLE` | ob_end_clean(), ob_end_flush(), ob_get_clean(), ob_get_flush()

  > Замечание: До PHP 8.4.0 через параметр flags также устанавливали флаги статуса обработчика вывода.

### Возвращаемые значения

Функция возвращает `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);

    ?>

### Смотрите также

- ob_get_contents() - Возвращает содержимое буфера вывода
- ob_end_clean() - Очищает (стирает) содержимое активного буфера вывода и отключает его
- ob_end_flush() - Сбрасывает (отправляет) значение, которое вернул активный обработчик вывода, и отключает активный буфер вывода
- ob_implicit_flush() - Включает или выключает неявный сброс буфера вывода
- ob_gzhandler() - Сжимает буфер вывода в формат gzip как callback-функция функции ob_start
- ob_iconv_handler() - Преобразовывает символы из текущей кодировки в кодировку выходного буфера
- mb_output_handler() - Преобразовывает кодировку символов в буфере вывода, выступая в роли callback-функции
- ob_tidyhandler() - Функция обратного вызова ob_start для восстановление буфера

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open