Управление выводом
Управляющие функции
🕛 01.11.2006, 13:38
Данная группа функций позволяет управлять тем, как РИР при выполнении сценария выводит информацию. Это может быть полезно в различных ситуациях, в особенности при посылке браузеру 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().