Пт, 17.05.2024, 10:45
Приветствую Вас Гость | RSS
Главная | Освежитель для сайта mk - Форум | Регистрация | Вход
PHP язык и все о веб програмировании
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » PHP язык » PHP » Освежитель для сайта mk
Освежитель для сайта mk
OntimistДата: Пн, 01.12.2008, 22:10 | Сообщение # 1
Admin
Группа: Администраторы
Сообщений: 27
Репутация: 1
Статус: Offline
Освежитель для сайта
Один из основных способов привлечь посетителей на сайт — почаще обновлять содержащуюся на нем информацию. Заниматься этим совсем не просто и отбирает такое занятие слишком много времени, хотя, безусловно, и вознаграждается. В этой статье мы попытаемся запрограммировать этот процесс и сделать смену информации на сайте динамической. Было бы неплохо иметь самые свежие новости с 3DNews, синхронно с сайтом mycomp.com.ua показывать у себя содержание свежего МК, да и вообще иметь у себя на сайте всю свежатину, которую вы только захотите. Реализовывать все это мы будем на уже знакомом вам PHP.

Получаем содержание свежего МК

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

Code
$www = file_get_contents(‘http://site.net’);  
echo $www;

То получим полную копию сайта site.net, только следует учитывать, что если, к примеру, стоит тэг для вывода рисунка с неполным адресом, вида <img src="1.jpg">, то он, естественно, отображаться не будет, так как поиск рисунка будет вестись по каталогу, где размещен скрипт, который скачивает страницу. Для полного отображения рисунка следует использовать ссылку такого вида: <img src="http://mycomp.com.ua/1.jpg">. Для этого можно использовать функцию замены текста, примерно так:

Code
$www = str_replace('<img src="','<img src="http://mycomp.com.ua/',$www);

То же самое происходит, если переделать ссылки, заменив относительный адрес на полный:
Code
$www = str_replace('<a href="','<a href="http://mycomp.com.ua/',$www);

Итак, наша цель — заполучить содержание свежего номера МК и без всяких хлопот производить обновление на своем сайте синхронно с МК :-). Для этого заходим на сайт МК и находим содержание номера. Следует запомнить адрес, по какому оно находится, так как нам придется передавать его функции для скачивания страницы. Адрес имеет такой вид: http://mycomp.com.ua/issuetoc/.

Но на странице помимо содержания есть еще много всякой информации, которая нам вовсе не нужна. Значит, надо как-то отсеять лишнее, выделив только то, что нам нужно. Для этого открываем исходный код страницы. Нам повезло — мы имеем дело с аккуратно оформленным кодом, разделенным комментариями, все просто и понятно. Это намного упрощает задачу, более того, фактически сводит ее к нулю :-). Находим комментарий <!-- ARTICLES --> — это начало, с этого места мы начинаем брать полезную информацию, с обложкой нового номера и списком статей. Конец этого всего тоже долго не пришлось искать, так как комментарий вполне красноречив: <!-- END ARTICLES -->.

Значит, теперь все, что нам остается сделать — это вывести всю информацию, которая находится между этими двумя комментариями. Код сценария:

Code
<?php  
$www2 = file_get_contents('http://mycomp.com.ua/issuetoc/'); //скачивание страницы  

$begin = strpos($www2,'<!-- ARTICLES -->'); //находим начало  
$endl = strpos($www2,'<!-- END ARTICLES -->'); // находим конец  

//вывод в цикле всей полезной информации  
for($i=$begin;$i<$endl;$i++)  
echo $www2[$i];  
?>

Все работает отлично, только есть небольшая проблема: функция file_get_contents(), основная в этом сценарии, работает только в PHP версии 4.3 и выше. Явно возникнут трудности при загрузке на какой-то старенький сервер, на котором по той простой причине, что все работает нормально, давно уже не обновляли ПО. Но незаменимых функций нет, и мы напишем собственный код для скачивания страницы с других сайтов, который будет работать на любых версиях PHP. Итак, перепишем существующий код таким образом:
Code
<?php  

$www2 = @file("'http://mycomp.com.ua/issuetoc/");  
$www = '';  

for($j=0;$j<count($www2);$j++)  
$www .= $www2[$j];  

$begin = strpos($www, '<!-- ARTICLES -->');  
$endl = strpos($www, '<!-- END ARTICLES -->');  

for($i=$begin;$i<$endl;$i++)  
echo $www[$i];  
?>

Почти ничего не изменилось, только теперь скачивание страницы производится с помощью функции file(), которая создает массив, элементами которого являются строки страницы. Далее весь массив складывается в одну строку, на2д которой мы проводим уже знакомые нам действия.


 
Форум » PHP язык » PHP » Освежитель для сайта mk
  • Страница 1 из 1
  • 1
Поиск:


Copyright MyCorp © 2024