Cat Speak

札幌在住のWebデザイナー・コモモのブログ

ホーム > ウェブ制作Tips > php > simplexml_load_fileを使ってRSSから最新記事一覧を作成する

simplexml_load_fileを使ってRSSから最新記事一覧を作成する

外部ブログの最新記事一覧を表示したいという場面はよくあると思います。 PHPのsimplexml_load_fileを使えば、RSSから簡単に最新記事の一覧を取得することができたので、メモしておきます。

下記の記述例はRSS2.0から一覧を取得する例です。

<?php
$xml = simplexml_load_file('http://cat-speak.net/feed/'); 
$count = 0;
echo '<ul>';    
foreach($xml->channel->item as $entry){
 $entrydate = date ( "Y.m.d",strtotime ( $entry->pubDate ) );
 echo '<li><span>'.$entrydate.'</span>';
 echo '<a href="'.$entry->link.'">'.$entry->title.'</a></li>';
 $count++;
 if ($count > 4){break;}
}
echo "</ul>";
?>

上記のソースをコピーしてphpファイルを作成し、サーバにアップすると、本サイトの最新記事5件が表示されます。

出力結果

<ul>
 <li><span>2011.06.15</span><a href="http://cat-speak.net/xx1">タイトル1</a></li>
 <li><span>2011.06.12</span><a href="http://cat-speak.net/xx2">タイトル2</a></li>
 <li><span>2011.05.30</span><a href="http://cat-speak.net/xx3">タイトル3</a></li>
 <li><span>2011.05.24</span><a href="http://cat-speak.net/xx4">タイトル4</a></li>
 <li><span>2011.05.18</span><a href="http://cat-speak.net/xx5">タイトル5</a></li>
</ul>

出力結果のデモはこちら
※本サイトのRSSの最新5件を出力しています。

解説

$xml = simplexml_load_file('http://cat-speak.net/feed/');

simplexml_load_fileでRSSファイルのURLを呼び出しています。

foreach($xml->channel->item as $entry){
 $entrydate = date ( "Y.m.d",strtotime ( $entry->pubDate ) );
 echo '<li><span>'.$entrydate.'</span>';
 echo '<a href="'.$entry->link.'">'.$entry->title.'</a></li>';
 $count++;
 if ($count > 4){break;}
}

foreachで処理を繰り返しています。
$count++; で、$countが0から1個ずつ増えて行き、$countが4になったら処理を抜けます(break)。したがって、表示件数を増やしたい場合は、if ($count > 4)の数字を増やして行きます。

RSSから取り出す値を変えたい場合、$xml->channel->itemや$entry->titleのように、->で階層を繋いでいるところがポイントです。

RSSのソースは、下記のようなxmlの階層構造になっています。

<channel>
 <item>
  <title>タイトル</title>
  <link>http://example.jp/xxx/xx</link>
  <comments>http://example.jp/xxx/xx#comments</comments>
   ・
   ・
 </item>
</channel>

RSSの階層構造にあわせて、channel->item->title、channel->item->link、channel->item->commentsのように、->で繋いで、取り出す値を変えれば、抜粋やコメント、本文など自由に新着一覧を作ることが可能です。

上記例はRSS2.0の場合ですが、xmlの階層構造を持ったものであれば、simplexml_load_fileを使って、好きなように情報を取り出すことが可能です。

コメントを残す

人気の記事