|
Использование Output Buffering в PHPИсточник: http://www.webscript.ru/ В моей первой статье было несколько интересных моментов, о которых хотелось упомянуть, однако не хотелось акцентировать внимание, потому что это уводило в сторону от основного содержимого. Но теперь, когда эти моменты являются темой для отдельной статьи, просто необходимо остановиться на них подробнее ;) Коротко суть проблемы можно изложить так: очень часто те данные, которые вы получаете, например, из базы данных, должны фигурировать в тексте HTML-страницы гораздо ранее того участка программы, который занимается добычей этих данных. Например, заголовок страницы, задаваемый тэгом <title>, зачастую является содержимым какого-либо поля таблицы БД, а блок программы, который обращается к БД, расположен гораздо позже вывода заголовка страницы. Что делать? Ответ простой - читать документацию. На функции ob_*,
начиная с ob_start() Кстати, в PHP есть возможность "сжать" (заархивировать) результат работы вашего скрипта, дабы уменьшить количество трафика, гуляющего по сети - для этого нужно вызвать функцию ob_start с параметром "ob_gzhandler": ob_start("ob_gzhandler"); Естественно, если браузер не поддерживает сжатый контент - ваша страница будет передана ему без изменений. А теперь давайте от слов перейдём к конкретным примерам:
Внимание! Здесь и далее предполагается, что в самом начале
скрипта включается буферизация вывода: Пример 1: автоматическая подсветка переменных.
Естественно, вышеприведённый пример не является идеальным - например, если в вашем тексте встретится код JavaScript, в котором нечаянно окажется комментарий, то работать он перестанет. Однако, с небольшой модификацией, именно этот пример раскрасил, хоть и не идеально, эту статью. Пример 2: автоматическое распознавание URL и генерация
ссылок. http://php.net/ => <a href="http://php.net">php.net</a> ftp://ftp.chg.ru => <a href="ftp://ftp.chg.ru">ftp.chg.ru</a>Так же было бы полезно преобразовывать следующие строки: www.webscript.ru => <a href="http://www.webscript.ru">www.webscript.ru</a> ftp.chg.ru => <a href="http://ftp.chg.ru">ftp.chg.ru</a>Приступим: в самом конце вашего скрипта надо дописать следующий код:
Пример 3: автоматическая генерация ссылок на разделы вашего
сайта
Естественно, приведённый выше пример нельзя считать окончательным - например, если у вас где-нибудь в синонимах встретится какой-то из символов, имеющих специальное значение в perl regular expressions, например, скобки, то результатом выполнения этого кусочка программы могут стать сообщения об ошибках на ваших страницах. Кроме того, приведённое выше регулярное выражение не учитывает, что название раздела уже может являться ссылкой либо её частью, и, соответственно, испортит её. Но, тем не менее, эта технология, с некоторыми дополнениями,
спасает автора этих строк от написания ссылок на разделы своего сайта. Кроме того, именно с
использованием output buffering становится очень простым реализация
достаточно сложных вещей - например, экспорт данных в excel можно
реализовать, написав буквально пару операторов (подсказка: excel
умеет импортировать HTML, ну а как отрезать дизайн от экспортируемой
таблицы вы, наверное, уже догадались).
|
Copyright © <LMTH>. Все материалы являются собственностью их авторов.
При перепечатывании ссылка на http://www.magaz.org/ как на источник информации обязательна. Правила использования материалов журнала |