Июн 2, 2015 -
PHP
Написать комментарий


Как на PHP прочитать RSS ленту и отобразить ее на своем сайте
Столкнулся я с такой практической задачей - на сайте моего друга понадобилось отобразить новостную ленту (анонсы новостей) с другого сайта.
Сторонний сайт отдает новостную ленту в виде RSS.
Т.е. надо прочитать RSS и вывести на страничке сайта.
Сделал я это так:
<? $url = 'https://news.yandex.ru/business.rss'; //адрес RSS ленты, для примера я взял новостную ленту яндекса, раздел Бизнес $rss = simplexml_load_file($url); //Функция интерпретирует XML-файл в объект //цикл для считывания всей RSS ленты foreach ($rss->channel->item as $item) { echo '<h1>'.$item->title.'</h1>'; //выводим на экран заголовок статьи echo $item->description; //выводим на экран текст статьи echo '</br></br>'; } ?>
Если лента русскоязычная в UTF-8, то для корректного отображения можно использовать такую функцию
<? function utf8_convert($str, $type) { static $conv = ''; if (!is_array($conv)) { $conv = array(); for ($x=128; $x <= 143; $x++) { $conv['utf'][] = chr(209) . chr($x); $conv['win'][] = chr($x + 112); } for ($x=144; $x<= 191; $x++) { $conv['utf'][] = chr(208) . chr($x); $conv['win'][] = chr($x + 48); } $conv['utf'][] = chr(208) . chr(129); $conv['win'][] = chr(168); $conv['utf'][] = chr(209) . chr(145); $conv['win'][] = chr(184); } if ($type == 'w') { return str_replace($conv['utf'], $conv['win'], $str); } elseif ($type == 'u') { return str_replace($conv['win'], $conv['utf'], $str); } else { return $str; } } ?>
и данные из ленты обрабатывать следующим образом:
<? $title = utf8_convert($item->title, "w"); $description = utf8_convert($item->description, "w"); ?>
и выводить на сайт уже в обработанном виде.