
一口にRSSといっても、その形式にはRSS1.0、RSS2.0、ATOMの3種類がある。それぞれ構造が異なるため、PHPでRSSを読み取って何か処理をしようとすると、それぞれの構造に合わせて読み取る必要がある。
というわけで、エラー処理は抜きで、判別のために必要な処理だけ関数にまとめてみた。
// $rssは、SimpleXMLElement型
function GetRSSType($rss)
{
return (empty($rss->channel->item) ?
(empty($rss->entry) ?
'rss1' :
'atom'
) :
'rss2');
}
この関数はこんな風に使う。
$rss = simplexml_load_file('RSSのURL');
$rssType = GetRSSType($rss);
$items = null;
switch($rssType)
{
case 'rss1':
$items = $rss;
break;
case 'rss2':
$items = $rss->channel->item;
break;
case 'atom':
$items = $rss->entry;
break;
default:
break;
}
foreach($items as $item)
{
$title = $item->title;
$link = $item->link;
$description = $item->description;
echo '記事のタイトル:'.$title.'<br />';
echo '記事のURL:'.$link.'<br />';
echo '記事の概要:'.$description.'<br />';
echo '<br />';
}