読者です 読者をやめる 読者になる 読者になる

RSS feed のパース関数

覚え書

RSSのフィードをパースする。
PEAR::XML_Feed_Parserを利用。
RSSのヘッドの情報と、各エントリーの情報を取得する。
RSS 1.0 RSS 2.0 Atomに対応。

<?

// PEAR::XML_Feed_Parser
require_once('XML/Feed/Parser.php');

function Get_RSS_feed_list($url,&$feed_head,&$feed_list)
{
  // file parse
  $src = file_get_contents($url);
  try
  { 
     $feed = new XML_Feed_Parser($src);
  }catch( Exception $e ){
     die($e->GetMessage());
  }
  // rss head
  $version = $feed->version();
  $feed_head['title']       = $feed->title; 
  $feed_head['link']        = $feed->link;
  $feed_head['description'] = $feed->description;
  $feed_head['creator']     = $feed->creator;
  $feed_head['version']     = $version;

  // rss list
     $i = 0;
  foreach($feed as $entry)
  {
     switch($version)
     {
        case 'RSS 1.0':
          $dt = date('Y/m/d' ,$entry->date);
        break;
        case 'RSS 2.0':
          $dt = date('Y/m/d' ,$entry->Pubdate);
        break;
        case 'Atom 1.0':
          $dt = date('Y/m/d' ,$entry->published);
        break;
        default:
          $dt = 'no date';
     }
    $feed_list[$i]['title']       = $entry->title;
    $feed_list[$i]['link']        = $entry->link;
    $feed_list[$i]['description'] = $entry->description;
    $feed_list[$i]['date']        = $dt;
    $feed_list[$i]['creator']     = $entry->creator;
    $feed_list[$i]['content']     = $entry->content;
    $i++;
  }
}
$url = "http://d.hatena.ne.jp/tknzk/index.xml";
Get_RSS_Feed_list($url, $rss_head, $rss_list);
?>

file_get_contentsでRSSフィードのファイルが開けることが条件
自サーバでMTを利用しているときは、要確認。