PHPに関すること

SimplePieとは

 RSSを取得するためのphpライブラリです。現在のバージョンは、1.2になっています(2009/8/21)。
logo_simplepie_horizontal.png

ダウンロード

 http://simplepie.org/downloads/

SimplePie

 Magpieとは異なり、simplepie.inc というライブラリを一つ入れておくだけで良いようです。シンプルだからsimplepieなんでしょうか。magpieはとっくにメンテナンスが行われていませんし、rss2.0はうまく読めない事が多いです。理由はよく判らないですけど、ある日突然(たぶん記事による)読めなくなったり、マルチバイトにうまく対応できていなかったり。
 今回、WordPressを2.8にupgradeしたらとたんに、WordPressのRSSが取得できなくなってしまい、フォーラムに質問してみたりしたんですが、特に有用な情報は得られず助かりませんでした。そこで、このSimplePieに換えて見ようと試みております。

使い方

 ダウンロードして解凍、Uploadします。cacheディレクトリを作って書き込める属性にするだけです。
 それで、phpでスクリプトを書きます。 最初のおまじないというか、宣言ですね。

$feed = new SimplePie();
$feed->set_feed_url( $url ); 

$urlに取得するサイトの文字列(RSSアドレス)を入れるです。

$feed->set_cache_location("./cache/"); 
$feed->set_cache_duration(1800);

キャッシュ間隔を指定します。単位は秒です。

$feed->init();
$feed->handle_content_type();

handle_content_typeですが、APIリファレンスを見ると、handle_content_type() won't work properly if any content or whitespace has already been sent to the browser, とかいてあるので、これは、このスクリプトが含まれているページに出力するContent-Typeなんだと思う。で、

$title = $item->get_title(); 

タイトルを取得して

$date  = $item->get_date('Y/M/d');

日付を取得すると言うわけです。
 APIのリファレンスがある(http://simplepie.org/wiki/reference/start)ので参考にすれば良いのですが、英語です。あまり詳しく解説されているサイトもないようです。

参考?

 になるかどうか知りませんけど、正しいかどうかは不明です。複数のサイトから取得して並べ換えて表示する方法です。

<?php 
require_once('./simplepie.inc');
$feed = new SimplePie();
$site_roll = array( 'http://example1.com/rss','http://exapmle2.com/rss');
foreach($site_roll as $url){
  $feed->set_feed_url( $url ); 
  $feed->set_cache_location("./cache/"); 
  $feed->init();
  $feed->handle_content_type();
  foreach ($feed->get_items() as $item){
    $url   = $item->get_permalink(); 
    $title = $item->get_title(); 
    $date_timestamp = $item->get_date('U');
    $date  = $item->get_date('Y/M/d');
    $koushin_string =  '<li>' . $date . ' <a href="' . $url .'">' . $title . '</a></li>';
    $rssarray["{$date_timestamp}"] = $koushin_string;
  }
}
krsort($rssarray);
echo "<ul>\n";
for(reset($rssarray); $key=key($rssarray); next($rssarray)){
 echo $rssarray[$key];
}
echo "</ul>\n";
?>

情報

 βの時の情報は結構有るようですが、最新バージョンのものは少ないようです。SimplePie1.0以降関数の名前が変わっていて、使えない事が多いです。だいたいからして、ベタでrssを取得しなければいけないシチュエイションが最近あまりないですからね。たいていのCMSにはrss取得機能が備わっていますから。


添付ファイル: filelogo_simplepie_horizontal.png 93件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-08-23 (日) 11:11:23 (382d)