Функции PHP
»
Функции управления выводом
ob_start
Версия: (PHP 4, PHP 5)
ob_start - включает буферизацию вывода. Синтаксис: bool ob_start ( callable $output_callback = NULL [, int $chunk_size = 0 [, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS ]]]) string (string $buffer [, int $phase ]) Параметры:output_callback -
Можно задать необязательный параметр output_callback.
Эта функция принимает строку в виде аргумента и должна также вернуть строку.
Она вызывается при сбросе (отправке) или очистке (с помощью
ob_flush(), ob_clean() или подобных функций)
или если буфер вывода сбрасывается в браузер по окончанию запроса.
При вызове функции output_callback, она получает
содержимое буфера и должна вернуть обновленное содержимое для буфера вывода,
который будет отправлен браузеру.
Если output_callback не является допустимой функцией, то
документируемая функция вернет FALSE.
Описание функции для этого параметра:
string handler ( string $buffer [, int $phase ] )
buffer - Содержимое буфера вывода.
phase - Битовая маска констант PHP_OUTPUT_HANDLER_*.
Если output_callback вернет FALSE , то
оригинальная информация отправится в браузер без изменений.
Параметр output_callback может быть игнорирован
передачей значения NULL .
ob_end_clean(), ob_end_flush(),
ob_clean(), ob_flush() и
ob_start() не могут вызываться из callback-функций,
так как их поведение непредсказуемо.
Если вы хотите удалить содержимое буфера, то
верните "" (пустую строку) из callback-функции.
Вы так же не можете вызывать функции
print_r($expression, true) или
highlight_file($filename, true)
из callback-функций буферизации вывода.
Замечание:
В PHP 4.0.4 функция ob_gzhandler() была введена
для облегчения отправки gz-кодированных данных web-браузерам,
поддерживающим сжатые web-страницы. ob_gzhandler()
определяет тип кодировки содержимого, принимаемый браузером,
и возвращает вывод соответствующим образом.
chunk_size -
Если передан не обязательный параметр chunk_size,
то буфер буден сброшен после любого вывода превышающего или равного
по размеру chunk_size. Значение
по умолчанию 0 означает, что функция вывода будет
вызвана, когда буфер будет закрыт.
До PHP 5.4.0, значение 1 было специальным
значением, которое устанавливало параметр chunk_size в 4096.
flags -
Параметр flags является битовой маской, которая
управляет операциями, которые можно совершать над буфером вывода.
По умолчанию она позволяет буферу вывода быть очищенным, сброшенным и удаленным, что
равносильно значению
PHP_OUTPUT_HANDLER_CLEANABLE |
PHP_OUTPUT_HANDLER_FLUSHABLE |
PHP_OUTPUT_HANDLER_REMOVABLE, или
PHP_OUTPUT_HANDLER_STDFLAGS как сокращение этой комбинации.
Each flag controls access to a set of functions, as described below:
Внимание |
Некоторые web-сервера (например Apache) изменяют рабочую директорию скрипта,
когда вызывается callback-функция. Вы можете вернуть ее назад, используя
chdir(dirname($_SERVER['SCRIPT_FILENAME']))
в callback-функции.
|
Список изменений:
Версия |
Описание |
7.0.0 |
В случае, если ob_start() используется внутри callback-функции буфера вывода, эта функция больше не будет приводить к ошибке E_ERROR, а вместо этого будет вызывать E_RECOVERABLE_ERROR, позволяя сторонним обработчикам ошибок поймать ее.
|
5.4.0 |
Третий параметр ob_start() изменен с булева (boolean) параметра erase (который при установке в FALSE предотвращал удаление буфера до тех пор, пока не завершалась работа скрипта) на целочисленный (integer) параметр flags. К сожалению, это означает появление несовместимости API для кода, который использовал третий параметр до версии PHP 5.4.0. Смотрите пример с флагами, чтобы понять как работать с кодом, чтобы он поддерживал совместимость с обеими версиями.
|
5.4.0 |
Параметр chunk_size, установленный в 1, теперь приводит к выводу по 1 байту в выходной буфер.
|
4.3.2 |
Функция вернет FALSE в случае, если output_callback не сможет быть выполнена.
|
|
Описание
Эта функция включает буферизацию вывода. Если буферизация вывода активна,
вывод скрипта не высылается (кроме заголовков), а сохраняется во
внутреннем буфере.
Содержимое этого внутреннего буфера может быть скопировано в строковую
переменную, используя ob_get_contents(). Для вывода
содержимого внутреннего буфера следует использовать ob_end_flush().
В качестве альтернативы можно использовать ob_end_clean()
для уничтожения содержимого буфера.
Внимание
Некоторые web-сервера (например Apache) изменяют рабочую директорию скрипта,
когда вызывается callback-функция. Вы можете вернуть ее назад, используя
chdir(dirname($_SERVER['SCRIPT_FILENAME']))
в callback-функции.
Возвращаемые значения
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Примеры:
Пример 1 Пример callback-функции, определенной пользователем
PHP:
скопировать код в буфер обмена
function callback($buffer) { // заменить все яблоки апельсинами } <html> <body> <p>Это все равно что сравнить яблоки и апельсины.</p> </body> </html>
|
Результат выполнения данного примера:
<html> <body> <p>Это все равно что сравнить апельсины и апельсины.</p> </body> </html>
|
|
Пример 2 Создание нестираемого буфера вывода с совместимостью с версиями PHP 5.3 и 5.4
|
|