- 2008-06-20 (金) 13:46
- PHP
前にwordpressでRSSを取得して表示という記事を書いたが、普通のWebサイトでもRSSの表示は出来る。
ヘッドラインとしてトップページにブログのRSS表示するもよし、ニュースリンクとしてランダム表示するもよし。
使うのはWordpressで使われてるのと同じRSSパーサーMagpieRSSです。
手っ取り早く動作を見てみる::
- magpierss-0.72ダウンロードして解凍
- 表示したいページと同じ階層にフォルダUP
- 表示したいページをPHPにする
- 表示したいページに
require('magpierss-0.72/rss_fetch.inc');を書く $rss = fetch_rss($url);として、$urlに表示したいRSSのフルパスを書くprint_r($rss);を書く
cacheディレクトリは自動的に作成される。(magpierssフォルダ内の不必要なものは削除してもいい)
ずらずらっとRSSが表示されると思います。が、多分文字化けしてるはず。
デフォルトの文字コードがISO-8859-1になってるので、
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');を追加する。
ほかの設定は前の記事に少し書いてあります。
ここまでのまとめソース
出力形式はMagpieRSS Objectの中に、[items]として配列で各記事の情報が入っています。
このブログ(wordpress)の場合はこんな感じ
-
[items] => Array
-
(
-
[0] => Array
-
(
-
[title] => FireFox3正式版リリース(FireFox2との併用)
-
[link] => http://tenderfeel.xsrv.jp/memo/185/
-
[comments] => http://tenderfeel.xsrv.jp/memo/185/#comments
-
[pubdate] => Wed, 18 Jun 2008 02:52:22 +0000
-
[dc] => Array
-
(
-
[creator] => Tenderfeel
-
)
-
....以下省略
FC2ブログの場合はこんな感じ
-
[items] => Array
-
(
-
[0] => Array
-
(
-
[about] => http://ex.blog.fc2.com/blog-entry-1.html
-
[link] => http://ex.blog.fc2.com/blog-entry-1.html
-
[title] => テスト
-
[description] => ああああああ
-
-
[content] => Array
-
(
-
[encoded] =>
-
ああああああ
-
)
-
-
[dc] => Array
-
(
-
[subject] => 未分類
-
[date] => 2008-06-10T20:16:56+09:00
-
....以下省略
配列のkeyとか並び順が全然違うのが分かると思います。
各記事のRSS情報を処理するためにはforeachで。
-
foreach ($rss->items as $item ) {
-
}
インスタンス$rssのitemsに入ってる配列を1つずつアレコレするよ、っていう繰り返し文。
タイトルに記事へのリンクを貼ってみる
$itemは[0] => Array()の部分になるので、値を取り出すには配列のkeyを[]に入れて$itemの後につけます。
さらに配列になってる場合は、$item[dc][creator]のように書きます。
以下はFC2ブログ用に適当に書いてみたソース
日時の整形
上のソースで言うと$item[pubdate]を2008/00/00の形にする
経過時間で表示
WP-MakuPuppetでやってる、投稿日時からの経過時間を表示
-
if($time!=null){
-
}else{
-
}
-
-
}else{
-
-
$timestamp='';
-
}
-
echo $timestamp;
ある条件に当てはまる記事だけ表示
たとえばカテゴリーがwordpressの記事だけとか
-
}
記事内の画像を取得
RSSに画像タグが入ってれば抜き出せます。下記ソースはFC2ブログ用。
wordpressは全文配信なら出来る…?このブログは抜粋配信なのでタグ除去されてました。
-
$encoded = $item[content][encoded];
正規表現はだいぶ適当です。
for文
foreachの代わりにfor文使えば取得数とか決めれます。
若干書き方が変わるので次のソースを参考にしてください
-
for($i=0;$i<5;$i++){
-
$title = $rss->items[$i][title];
-
}
関連記事
- Newer: XHTMLコーディング過程を晒してみる(画像で)
- Older: FireFox3正式版リリース(FireFox2との併用)