Как на PHP прочитать RSS ленту и отобразить ее на своем сайте

Столкнулся я с такой практической задачей - на сайте моего друга понадобилось отобразить новостную ленту (анонсы новостей) с другого сайта.

Сторонний сайт отдает новостную ленту в виде RSS.

chitat rss 450x174 Как на PHP прочитать 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");

?>

и выводить на сайт уже в обработанном виде.

 

 

  Метки:
  admin
  Просмотров: 6 445
  Запись опубликована в 14:35

Есть что сказать? Тогда действуй!