| « Поставить закладку » « Сделать стартовой » | |||
|
|||
| Статьи:: Интернет технологии :: PHP :: Работа с удаленными документами
Работа с удаленными документамиСлужебные секретные документы существуют не для того, Интересная особенность php заключается в том, что он может выступать не только в роли обработчика и исполнителя сценария, но и в качестве клиента сети. Если до этого урока мы манипулировали только локальными объектами, такими как файлы и директории, то на этом мы познакомимся со способами взаимодействия с удаленными объектами. Обращение к веб-документам.Обращение к документам, расположенным на удаленном сервере, производится уже знакомой нам функцией fopen(). Как вы понимаете, в этом случае она может быть вызвана только в режиме чтения. Далее с полученным дескриптором файла можно делать все то же, что и с дескриптором локального файла. Например, можно вывести все содержимое на экран пользователя:
Функцией fpassthru() мы просто вывели все содержимое веб-документа, то есть на своей странице мы получим точную копию желаемой страницы. Извлечение информации из документа.Чаще всего работа с удаленными файлами проводится для получения необходимой информации из целого документа. Примером может служить установленный на сайте прогноз погоды, получаемый, например, с Метеобюро, либо курс доллара с http://www.rbc.ru/, либо афоризм дня или лучший анекдот. Все это и многое другое можно создать с помощью сетевых возможностей php. Извлечение части информации производится с помощью регулярных выражений. Использование регулярных выражений основано на расположении желаемых данных в html-коде документа. Скрипт по показу анекдотов.В качестве иллюстрации к вышесказанному предлагаю написать скрипт, который будет выводить анекдоты с сайта Анекдоты наКроватке в соответствии с указанным пользователем рейтингом. Сперва напишем функцию, которая выводила бы форму для задания диапазона рейтингов анекдотов для вывода.
Мы вставили элемент select, с помощьюкоторого пользователь будет определять нижний предел для рейтинга. Теперь добавим второй select - для верхней границы рейтинга.
Теперь напишем главную функцию, которая будет читать удаленный документ, обрабатывать его и выводить в соответствии с указанными пожеланиями пользователя.
Данная функция начинается с получения дескриптора удаленного файла. Если происходит ошибка, выходим из скрипта, выводя соответствующее предупреждение. Далее мы считываем файл, указывая немыслимо большой размердокумента, чтобы гарантированно считать весьфайл. Напомню, что мы не можем использовать функцию filesize(), так как онаработает только слокальными объектами. Следующей строкой мы обрезаем пустые символы по краям текста, а также удаляем повторяющиесяпробелы. Обратите внимание на следующую строку: меняем кодировку текста с koi-8 на windows-1251, так как файл читается с удаленного сервераименно в этой нежелательной для нас кодировке. После идет ключевой момент всей функции: спомощью регулярных выражений мы сначала помещаем в массив $anecdots найденные анекдоты, а в массив $rating - их рейтинг. Рассмотрим, как это делается. Заглянув в html-код страницы с анекдотами, мы увидим, каким образом они располагаются:
Отсюда мы можем сделать вывод, чтоинтересующие нас данные находятся междувыделенными последовательностями символов.Причем мы можем с достаточной долейуверенностью утверждать, что они однозначноопределяют необходимую информацию: длятела анекдота таким уникальным указателемявляется тег <hr ...>, а для рейтинга - слово"Рейтинг". Больше таких последовательностей символовв документе не встречается. Исходя из полученных умозаключений, мысоставили регулярные выражения, причем сиспользованием подшаблонов, заключенных вскобках. Напомню, что функция preg_match_all() помещает строки, соответствующиеподшаблонам, в массив с индексом 1, то естьсами анекдоты (без посторонних html тегов)будут храниться в массиве $anecdots[1], а числа-рейтинги - в массиве $rating[1]. Ну, а теперь осталось самое легкое -вывести подходящие условию анекдоты наэкран пользователя:
Если максимум указан как неограниченный,то верхний предел мы устанавливаемневероятно большим. Далее мы просматриваемвесь массив с рейтингами, и если его элементнаходится в заданном диапазоне, то мывыводим анекдот, соответствующий этомурейтингу, и внизу пишем сам рейтинг, причемиспользуем массив $rating[0], то естьвыводим строку, соответствующую всемуаблону поиска рейтинга. Таким образом, унас выведется не просто цифра, а "Рейтинг:<b>цифра</b>". И, наконец, нам осталось только грамотновызвать написанные функции:
Я хотел дать возможность читателямиспытать скрипт в действии, но, к сожалению,хостинг этого сайта не дает возможностиобращения к файлам других серверов. Так чтопробуйте сами. До встречи на следующем уроке! Источник: http://myphp.net.ru/ Рубрика: PHP
9 правил для начинающего Ajax-разработчика.
Эти девять правил несложны, никаких кусков кода — только общие советы начинающим Ajax-разработчикам. Крайне вольный перевод 9 AJAX Tips & Tricks.
Подробнее... |
Рубрика: AJAX
| Добавлено: 25.08.2008
ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения.
Приветствуем наших читателей. Что-то в последнее время много новостей и я даже не успеваю все отобрать и написать о самых интересных технологиях и продуктах. А ведь ещё и работать иногда надо. Но мимо этой новости мы просто не могли пройти - ведь AJAX и ExtJS как его наглядное воплощения это наша основная технологическая платформа. А буквально вчера вышла следующая версия в текущей ветке 2.х - 2.2 Что же там нового, полезного и интересного мы сейчас и рассмотрим.
Подробнее... |
Рубрика: AJAX
| Добавлено: 25.08.2008
Windows 7: под покровом тайны.
О преемнице Windows Vista, носящей кодовое имя Windows 7, известно очень мало. Корпорация Microsoft, наученная горьким опытом, с крайней неохотой делится с журналистами информацией о разрабатываемой системе, дабы у пользователей и разработчиков программного обеспечения не сложилось искаженное представление о продукте, которое бы повлияло на продажи новой операционки, как это случилось с "Вистой". Тем не менее, некоторые скупые сведения хоть и изредка, но просачиваются из стен редмондского гиганта.
Подробнее... |
Рубрика: Windows 7
| Добавлено: 25.08.2008
Остальные статьи:
Apache mod_ndb - MySQL кластер с доступом через HTTP и Ajax
Поиск уязвимостей в программах с помощью анализаторов кода
Как появилась библиотека VivaCore
Это сложно
ASP.NET и немного поисковой оптимизации
Protocol buffers: библиотека обмена данными для C++, Java, Python от Google
Описание VivaVisualCode
JQuery: Пара сотен плагинов в одной заметке
Касание сетки
Разработка элементов управления ASP.NET на примере навигационной панели
Сохранения параметров приложения в .Net
Custom cursors в .Net
Бегун убегает от хозяина
"Битрикс" выпустил седьмую версию CMS
Выбираем систему управления сайтом
Рынок CMS в Европе или впечатления с CeBIT 2008 |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|