Учебник по основам PHP. PHPBeginner

Управление выводом


Данная группа функций позволяет управлять тем, как РИР при выполнении сценария выводит информацию. Это может быть полезно в различных ситуациях, в особенности при посылке браузеру HTML-заголовков (headers) после того, как сценарий начал выводить HTML-текст. (В обычном случае невозможно послать заголовок после того, как был начат вывод текста.) Эти функции не воздействуют на заголовки, посланные функциями header() или setcookie(), а только па функции, подобные echo() и HTML-тексту между блоками РНР-кода.

<?php ob_start():
echo "HelloXn"
\ I setcookie ("cookiename".
"cookiedata"):
end flush() : / >>

В примере выше вывод командой echo() будет сохранен в буфере вывода до вызова функции ob_end_flush(). В то же время вызов setcookie() успешно сохраняет cookie, не вызывая ошибки.

См. также: header() и setcoukie().

ob_start

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

void ob_start ([string output_callback])

После вы-зова этой функции включается буферизация вывода и, пока она активна, никакие из выводящихся данных не будут посланы браузеру, а будут сохраняться во внутреннем буфере РНР.

Содержимое буфера может быть скопировано в строковую переменную функцией ob_get_contents(). Для вывода содержимого из буфера используется функция ob_end_f"lush(). Удалить содержимое буфера позволяет функция ob_end_clean().

В аргументе output_callback можно указать функцию, которая будет автоматически вызываться при выводе содержимого буфера. Обычно это используется для модификации содержимого буфера перед выводом (например, сжатия). Тогда при вызове функции ob_end_flush() в указанную функцию будет передаваться содержимое буфера, а то, что она возвратит, будет выведено (заметьте, сама функция не должна ничего выводить).

Буферизация может быть вложенной, и тогда она обрабатывается соответственно вложенности; и содержимое, выводимое из буфера нижнего уровня, будет включаться в буфер верхнего уровня. Не забывайте, что для вывода всего буферизированного содержимого необходимо вызвать функцию ob_end_flush() сколько же раз, сколько была вызвана ob_start().


<'php function c($str)
{ // получает содержимое буфера
return n!2br($str):
// возвращает содержимое буфера )
function d($str) j
// получает содержимое буфера
return strtoupper($str);
// возвращает содержимое буфера ?>
<?php ob_start("c"). ?>
Тут всякий текст...
<?php ob_start("d"):
/* преобразовывать текст далее
в верхний регистр */ ?>
и еще много чего .
<?php ob_end_flush(): ?>
смотрите сами ...
<?php ob_end_f)ush(): ?> ?>



См. также: ob_get_contents(), ob_end_f"lush(), ob_end_clean() и ob_implicit_ flush().

ob_get_contents

Получение содержимого буфера вывода

string ob_get_contents(void);

Если буферизация неактивна, возвращается FALSE.

См. также: ob_start() и ob_get_length().

ob_get_length

Получение длины данных в буфере вывода

string ob_get_length(vcrid);

Если буферизация неактивна, возвращается FALSE.

См. также: ob_start() и ob_get_contents().

ob_end_flush

Вывод содержимого буфера

void ob_end_flush(void);

После вывода буфер текущего уровня очищается, поэтому вызывайте функцию ob_get_contents() заранее, если необходимо получить его содержимое.

См. также: ob_start(), ob_get_contents() и ob_end_clean().

flush

Вывод всего содержимого буфера

void flush(void)

Функция воздействует только на буферизацию РНР и не может контролировать схему буферизации wcb-сервера или браузера.

, Некоторые серверы, в особенности под Win32, буферизируют выводящиеся сценарием данные до того, как сценарий завершится и данные будут отосланы браузеру.

Браузер, в свою очередь, также может буферизировать получаемые данные до их отображения. Netscape, например, буфсршируег текст до получения символа завершения строки или открывающего тега, а для таблиц — до получения тега </table> таблицы верхнего уровня.

ob_end_clean

Очистка буфера

void ob_end_clean(void);

Вызов функции отключает буферизацию на текущем уровне.

См. также: ob_start() и ob_end_flush().

ob_implicit_ flush

Установление режима буферизации

void objmplicit_flush (jjnt flag])

Если в аргументе указано ненулевое значение или оно не указано, то при осуществлении каждой операции вывода будет неявно вызываться функция flush().

При вызове функции неявно вызывается ob_end_f"lush().

См. также: flush(), ob_start() и ob_end_flush().


Содержание раздела