Задача сценария - по адресу сайта определить, имеется ли на сайте лента новостей и, если имеется, показать ее заголовки с гиперссылками на содержание.
Как узнать, имеется ли на сайте лента новостей?
Рассмотрим пример: http://newsru.com/
Открывая домашнюю страницу сайта, мы видим теги link, которые подключают RSS-каналы. Следовательно, сценарий должен прочитать страницу и поискать в ней теги link, у которых имеется атрибут type="application/rss+xml" и, при успешном обнаружении, прочитать значение атрибута href. Прочитав его, открыть адрес с помощью DOM и вывести список новостей.
<link rel="alternate" type="application/rss+xml" title="RSS / Самые главные новости" href="http://feeds.newsru.com/com/www/news/top" /> <link rel="alternate" type="application/rss+xml" title="RSS / Главные новости" href="http://feeds.newsru.com/com/www/news/big" /> <link rel="alternate" type="application/rss+xml" title="RSS / Важные новости" href="http://feeds.newsru.com/com/www/news/main" />
<link rel="alternate" type="application/rss+xml" title="RSS / Все новости" href="http://feeds.newsru.com/com/www/news/all" />
Поиск тега link (скажем, первого из встреченных) может быть осуществлен с помощью регулярного выражения.
<(link)(.*?)type="application\/rss\+xml"(.*?)>
Как загрузить эту страницу в РНР-сценарий?
$xml = new DOMDocument();
@$xml -> loadHTMLFile("http://lenta.ru");
$sample = $xml->saveHTML();
Как теперь считать этот канал в РНР-сценарий?
Очень просто - с помощью указанного выше регулярного выражения (или подобного) получить тег link; из него извлечь имя файла (RSS); и, наконец, загрузить его:
$xml -> load($rss);
Как вывести на экран результат?
Вывод на экран контента осуществите с помощью XSL
Комментариев нет:
Отправить комментарий