RSS Feed reader

Blog最新記事表示システム - RSS Feed reader

※表示されているblogは許可を得たものです

※動作テスト中のため、URLは予告なく変更することがあります

優秀な薬剤師による様々なblogがありますが、あちこち見て回って「新着記事無いかなー?」なんてやっているのも面倒なのでゼロから作ってみました。丸一日かかりました…。

ある種のスクレイピングみたいなものですが、RSSのデータは大抵はURLいじれば表示できるので、楽と言えば楽です。

いや、wordpressがあるなら、pluginで引っ張ってこればよかったのかもしれませんが、自分で作ってみたかったもので…。

もうほんと久しぶりに知恵熱が出そうになりました。

本質的に理解できていれば楽なんでしょうけども、今回は初めてのことが多く…。

原理的には、

$url = array(“http://~~”,”http://~~”);

と、配列に入れて、間にechoで<table>を噛ませて、foreachで$urlを配列の分だけ回しています。

rssのdataは各々のblogから/feedか/rssで簡単に入手できるので、連想配列に組み込んで例えば以下のようにできます。

$blogTitle = $rssdata->channel->title;

各記事の内容はitemに入っていますので、

$entry = $rssdata->channel->item[$i];

というような感じで。この辺りはどのRSSreaderも一緒かなと思います。

これで対象ブログの$blog_titleを指定できますし、channel->item[$i]でforループかければ、指定した回数だけ記事を過去にさかのぼって入手できます。

そこまでは簡単だったのですが、複数のblogの記事を多次元配列に組み込んでから、一次元配列に戻してタイムスタンプ順に並べ替えるというのが非常に面倒なコードになってしまい…。5,6時間は悩んでいました。

結果として、endやforeach,for,array_multisortなんかを多用してどうにかなりました。

果たして正しいのかはわかりませんが

for($i=0;$i<count($date));$i++){

$result[$date[$i]] = $data[$i];

}

なんてコードで予測どおり動いたのには驚きました。

説明するとややこしいですが、なんとかなった(?)ので、今日丸一日潰したのも無駄ではなかったかなと思います…。

ある意味で自分用のRSSreaderなので、薬学的な記事を継続して書いている面白そうなblogの書き手にお声掛けして追加しようと思ってはいますが、自分のblogも表示してほしいという方が居ればTwitterで話しかけるか、DM飛ばすか、(そのうちできると思われる)メールフォームを利用してください。多分、アクセス数は上がると思います。多分。…多分。