Разработчику. Сборник рецептов PHP
Задавайте вопросы

Автоматизация работы с Web

Вернуться назад

Введение

Большую часть времени PHP работает как часть веб-сервера, посылая информацию броузерам. Даже если его запускают из командной строки, он, как правило, выполняет задачу и выводит некоторую информацию. Тем не менее PHP может быть также полезен и в качестве веб-броузера – получая доступ к определенным URL и обрабатывая их содержимое. Большинство рецептов этой главы посвящено получению доступа к URL и обработке результатов, хотя здесь обсуждаются и некоторые другие задачи, такие как использование шаблонов и обработка серверных протоколов.

В PHP есть четыре способа доступа к удаленным URL. Выбор зависит от того, насколько доступ должен быть простым, управляемым и переносимым. Эти четыре способа реализуются посредством функций fopen() и fsockopen(), расширения c URL или класса HTTP_Request в PEAR.

С функцией fopen() работать просто и удобно. Она рассматривается в рецепте-Получение содержимого URL методом GET Функция fopen() поддерживает перенаправления, поэтому если она применяется для получения доступа к каталогу http://www.example.com/people, а сервер переадресует вас к http://www.example.com/people/, то в результате будет получена страница с индексом каталогов, а не сообщение о том, что URL был перемещен. Функция fopen() также работает и с HTTP и с FTP. Оборотная сторона функции fopen() заключается в том, что она может обрабатывать только HTTP-запросы GET (не HEAD или POST), вместе с запросом невозможно посылать дополнительные заголовки или любые cookies, и получить можно только содержимое ответа, но не его заголовки.

Работа с функцией fsockopen() требует больше затрат, но предоставляет большую гибкость. Функция fsockopen() показана в рецепте-Извлечение содержимого URL с помощью метода POST После открытия сокета с помощью функции fsockopen() необходимо послать соответствующий HTTP-запрос на данный сокет, а затем прочитать и проанализировать ответ. Это позволяет добавлять заголовки к запросу и предоставляет доступ ко всем заголовкам ответа. Однако при этом надо написать дополнительный код, для того чтобы правильно проанализировать ответ и предпринять соответствующее действие, например, последовать переадресации.

Если у вас есть доступ к расширению c URL или к классу HTTP_Request в PEAR, то следует применять эти инструменты, а не функцию fsockopen(). Расширение c URL поддерживает множество различных протоколов (включая HTTPS, рассмотренный в рецепте-Получение содержимого HTTPS URL) и предоставляет доступ к заголовкам ответа. Мы используем расширение c URL в большинстве рецептов этой главы. Для того чтобы с этим расширением можно было работать, необходимо инсталлировать библиотеку cURL, доступную на http://curl.haxx.se. Кроме того, PHP должен быть собран с ключом--with-curl.

Класс PEAR HTTP_Request, не поддерживает HTTPS, но предоставляет доступ к заголовкам и может использовать любой метод HTTP. Если этот модуль PEAR не установлен, то его можно загрузить с http://pear.php.net/get/HTTP_Request. Как только файлы модуля окажутся в каталоге include_path, с ними можно будет работать, обеспечивая хорошую переносимость решения.

Рецепт-Отладка обмена заголовками HTTP- помогает проникнуть за кулисы HTTP-запроса, чтобы исследовать заголовки запроса и ответа. Если запрос, конструируемый в программе, не дает желаемого результата, то изучение заголовков часто дает ключ к разгадке причины ошибки.

Рецепты с-Выделение информации на веб-странице по-Удаление тегов HTML и PHP- помогут организовать обработку содержимого веб-страницы, загруженной в программу. В первом из них показано, как отмечать определенные слова на странице цветными блоками. Этот способ полезен, например, для подсвечивания условий поиска. Рецепт-Извлечение ссылок из HTML-файла- содержит функцию для нахождения всех ссылок на странице. Это важный строительный блок для создания веб-паука (web spider) или системы контроля ссылок. Преобразованию простого ASCII-текста в HTML посвящены рецепты-Преобразование ASCII в HTMLи-Преобразование HTML в ASCII. Рецепт-Удаление тегов HTML и PHP- показывает, как удалить все HTML- и PHP-теги из веб-страницы.

Другой вид работы со страницами состоит в применении системы шаблонов. Шаблоны, а они рассматриваются в рецепте-Использование шаблонов системы Smarty-, позволяют как угодно изменять внешний вид ваших веб-страниц, не меняя кода PHP, заполняющего страницы динамическими данными. Точно так же можно изменять код программы управления страницами, не затрагивая внешний вид последних. Рецепт-Анализ файла протокола веб-сервера- посвящен общей задаче администрирования сервера – анализу файлов протоколов доступа к веб-сайту.

Для примера две программы используют инструмент извлечения ссылок, описанный в рецепте-Определение количества строк, возвращенных запросом-. Программа в рецепте-Программа: обнаружение устаревших сылок- просматривает ссылки на странице и сообщает, какие ссылки еще действительны, какие были перемещены, а какие больше не работают.

Программа в рецепте-Программа: обнаружение устаревших сылок-докладывает о состоянии ссылок. Она сообщает, перемещалась ли страница, на которую ссылаются, и когда она была изменена последний раз.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ