Многие сайты, блоги или новостные порталы создают rss ленты - краткий файл, в котором перечислены последние новости с сайта в полном или кратком формате. RSS ленты очень легко устанавливать на свой сайт.Чаще всего такие ленты можно найти в формате .rss или .xml. В целом, для нас это не важно. Рассмотрим как взять информацию с канала. Для этого будет достаточно использовать встроенную библиотеку simplexml. В качестве примера я возьму rss ленту Яндекса.
Посмотрите его структуру. Здесь видно, что корнем является rss, в нем лежит channel и только потом теги item. В каждом item и находится наша новость. Поэтому настроим цикл foreach так, чтобы он обрабатывал каждый item в отдельности.
Итак, создайте файл index.php в utf-8 и разместите в нем такой код:
<?php header('Content-Type: text/html; charset=utf-8');
$url = 'https://news.yandex.ru/internet.rss';
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_REFERER, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$src = curl_exec($curl);
curl_close($curl);
$items = simplexml_load_string($src);
foreach ($items->channel->item as $item) {
echo '<h2>'.$item->title.'</h2>';
echo '<p>'.$item->description.' <a href="'.$item->link.'">Подробнее</a></p>';
echo '<div>'.$item->pubDate.'</div>';
}
?>
Если вы запустите скрипт, то он загрузить последние новости Яндекса с ссылкой подробнее (при условии, что поисковик к этому времени не поменяет формат данных).
Посмотрите на код - его первая половина берет источник через curl, так как simplexml не умеет работать с https напрямую. Поэтому в $src хранится rss с сайта источника. Далее мы подставляем ее в парсинг simplexml методом simplexml_load_string(). И на последнем этапе формируем foreach цикл, в котором обрабатываем каждый item элемент. А именно, выгружаем его название, ссылку, описание и дату.
По такому принципу можно парсить любые rss ленты и размещать их на своем сайте. Единственное, по правилам хорошего тона, не мешало бы еще запомнить выдачу rss в куки для каждого посетителя, чтобы не делать по 100 запросов к сайту источнику. Это будет хорошо для вашего сайта и сайта источника.