Posted at

RSSを取得し、表示する

More than 5 years have passed since last update.


CURLというモノ

curl というライブラリを使用しています。

これを使うとPHP ini をいじらなくて済みます。

良く分からないけど「arrow_url_fopen」とか言うやつがoffの時は

スクレイピングも出来なかった。

onにしたら出来たけど、なんだか嫌だったのでcurlにしました。

速度もちょっと早いです。(file_get_contents と比較)


PHP

<?php

//対象URLのサイトの配信しているRSSフィードを取得する
$curl = curl_init(); ///////////////////////////////スタート宣言と初期化
curl_setopt($curl, CURLOPT_URL, 'http://○○○.com/rss/○○○'); /////RSSのURL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); ////////// 1はtrue
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); //////////頑張る秒数
$str = curl_exec($curl); ////////////////////////// $str にRSSの内容を代入
curl_close($curl); ////////////////////////// 終了
$feed = simplexml_load_string($str);//XML文字列をオブジェクトに代入

//echo htmlspecialchars($str);//XML解析用(コメントアウトを外すとコードが表示)

//フィードタイトル
echo $feed->channel->title . "<br />";

//6つのアイテムを取得
for($i=0;$i<=5;$i++){
$entry = $feed->channel->item[$i];
echo "<image src='";
echo $entry->enclosure->attributes()->url;
echo "'>";
echo "<a href='";
echo $entry->link;
echo "'>";
echo $entry->title;
echo "</a>";
echo $entry->pubDate . "<br />";
}
?>


このまま使えます。

ただ、画像を配信していないモノの場合は

image を取らないとダメです。


$entry -> title の前後にpタグとかも付けれます。

$entry -> pubDateは日付なので削除しても大丈夫です。


ちゃんと表示できますが

「こっちの方がいいよ」とか、ありましたら

是非教えてください。

レンタルサーバーなので限界がありますが…。