52680.fb2 Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 107

Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 107

virtual

Имитация include virtual.

Синтаксис:

int virtual(string $url)

Функция virtual() представляет собой процедуру, которая может поддерживаться только в случае, если PHP установлен как модуль Apache. Она делает то же самое, что и SSI-инструкция <-- #include virtual=... -->. Иными словами, она генерирует новый запрос серверу, обрабатываемый им обычным образом, а затем выводит данные в стандартный поток вывода.

Чаше всего функция virtual() используется для запуска внешних CGI-сценариев, написанных на другом языке программирования, или же для обработки SSI-файлов более сложной структуры. В случае, если запускается сценарий, он должен генерировать правильные HTTP-заголовки, иначе будет выведено сообщение об ошибке. Для включения обычных PHP-файлов с участками кода функция virtual() неприменима - это выполняет оператор include.

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

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

Эти функции не воздействуют на заголовки, посланные функциями header() или setcookie(), а только на функции, подобные echo() и HTML-тексту между блоками PHP-кода.

<?php

ob_start();

echo "Hellon"

setcookie("cookiename", "cookiedata");

ob_end_flush();

?>

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

Введение

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

Эти функции не воздействуют на заголовки, посланные функциями header() или setcookie(), а только на функции, подобные echo() и HTML-тексту между блоками PHP-кода.

<?php

ob_start();

echo "Hellon"

setcookie("cookiename", "cookiedata");

ob_end_flush();

?>

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

Функции управления выводом

ob_start

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

Синтаксис:

void ob_start([string output_callback])

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

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

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

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

<?php

function c($str) { // получает содержимое буфера

return nl2br($str); // возвращает содержимое буфера

}

function d($str) { // получает содержимое буфера

return strtoupper($str); // возвращает содержимое буфера

}

?>

<?php

ob_start("c");

?>

Тут различный текст...

<?php

// преобразовывать текст длее в верхний регистр

ob_start("d");

?>

еще что-то...

<?php