2011年3月23日水曜日

phpでrss1.0 rss2.0 atom0.3 atom1.0を読み込み、表示するコード

<?php //rss1.0 rss2.0 atom対応
$rss_url = array( //配列にrss1.0 またはrss2.0 またはatomのurlを入力
                "http://tannsokuvip.blog54.fc2.com/?xml",  //rss1.0
                "http://blog.goo.ne.jp/staffblog/rss2.xml", //rss2.0
                "http://hamusoku.com/atom.xml" //atom
            );

rss($rss_url);

function rss($rss_url){  //こっから下はもっとスマートに書けると思うけど自分の技術不足のため放置
    foreach($rss_url as $url){
        $rss =  simplexml_load_file("$url");
    if($rss->entry){  //atomの条件
    foreach ($rss->entry as $ent){
            print "<p>";
            print $ent->title;
            print "<br>";
            print $ent->link['href'];   //xmlの属性へのアクセスの仕方 http://www.phppro.jp/qa/1308 のA3にヒント
            print "<br>";
            print $rss->title;
            print "<br>";
            if($ent->issued){                                        //atom エントリーが公開された日時
            print date('Y年n月j日G時i分',strtotime($ent->issued));   //atom version=0.3
            }else if($ent->updated){                                //strtotime() 参照 http://jp2.php.net/manual/ja/function.strtotime.php
            print date('Y年n月j日G時i分',strtotime($ent->updated));  //atom version=1.0,  date() 参照 http://jp2.php.net/manual/ja/function.date.php
            }   
            print "<br>";
            print "</p>";
        }
    }
    elseif($rss->item){  //rss1.0
        foreach ($rss->item as $item){
            $dc = $item->children('http://purl.org/dc/elements/1.1/');
            print "<p>";
            print $item->title;
            print "<br>";
            print $item->link;
            print "<br>";
            print $rss->channel->title;
            print "<br>";
            print date('Y年n月j日G時i分',strtotime($dc->date));
            print "<br>";
            print "</p>";
        }
    }elseif($rss->channel->item){ //rss2.0
        foreach ($rss->channel->item as $item){
            $dc = $item->children('http://purl.org/dc/elements/1.1/');
            print "<p>";
            print $item->title;
            print "<br>";
            print $item->link;
            print "<br>";
            print $rss->channel->title;
            print "<br>";
            print date('Y年n月j日G時i分',strtotime($dc->date));
            print "<br>";
            print "</p>";
        }
    }
    }
}
?>





とりあえずここまで。
読み込みたいxmlの要素をアレンジすればいろいろ表示できそう。
あとは、Mysqlに保存したりしてみたりしたい。

0 件のコメント:

コメントを投稿