SimplePie - это удобный php-класс для импорта RSS. Поддерживает следующие версии каналов: RSS (0.90, 0.91, 0.92, 1.0, 2.0), Atom (0.3, 1.0). Это open-source по лицензии BSD, т.е. в отличие от GPL-лицензии вы можете внедрять SimplePie в свои коммерческие продукты и не задумываться об оплате.
Установка
Для работы SimplePie потребуется несколько библиотек:
Импорт RSS. Простой пример
Создайте в папке simplepie папку с именем cache. Эта папка будет использована для кэширования данных. Да, да, в нем есть встроенное кэширование. По умолчанию кэш хранится 60 минут. Вся библиотека SimplePie состоит из одного класса с названием SimplePie, и вы должны лишь создать объект этого класса, а затем использовать нужные методы. Создайте в папке simplepie новый файл с именем test.php и поместите в него следующий код:
<?php // загрузка библиотеки require_once $_SERVER['DOCUMENT_ROOT'].'/simplepie/simplepie.inc'; // создание и настройка объекта SimplePie $feed = new SimplePie(); $feed->set_feed_url('http://ekimoff.ru/feed'); // путь к rss-каналу $feed->set_cache_location('cache'); $feed->init(); $feed->handle_content_type(); if ($feed->data) { // вывод названия канала echo '<h1><a href="'.$feed->get_link().'">'.$feed->get_title() .'</a></h1>'; // вывод не более 5 элементов канала for ($i=0; $i<5; $i++) { $item = $feed->get_item($i); // вывод ссылки и названия новости echo '<a href="'.$item->get_permalink().'">'.$item->get_title().'</a>'; // вывод описания новости echo '<div>'.$item->get_description().'</div>'; } } ?>
Ну вот — читать данные из внешнего канала с помощью SimplePie оказалось не просто, а очень просто!
А как быть, когда при импорте фида не импортируются картинки? Например, лента http://k.img.com.ua/rss/ru/russia.xml, в которой картинки отображаются явно. А вот в ленте http://www.rbc.ua/include/dynamic/rus/top/politics_full.xml картинки не отражаются, т.к. урл картинки не входит в блок .
Как это можно решить при помощи SimplePie?
а как конвертировать кодировку в 1251? rss идет в утф...