Diary--/*isaji*/MIDI Lab.

<< 2024/11 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>

Magpie RSSの覚え書き 2005-12-05 [permalink] [?B] はてなブックマーク

Magpie RSSを使ってRSSを取得して出力してみる。

  • Magpie RSS - PHP RSS Parser
    • magpierss-0.61.tar.gz以下のバージョンじゃないと取得したRSSが文字化けするみたい。
    • *.incと./extlibを下記サンプルのphpファイルと同じディレクトリに置く。
    • cacheディレクトリをあらかじめ作っておく。初期設定でのキャッシュの生存時間は1時間。rss_cache.incの$MAX_AGEで秒単位で設定…かな?

UTF-8のhtmlへSSIで埋め込むように書いているので、それ以外の場合は適宜修正。

<?php
require_once 'rss_fetch.inc';

$url = $_GET['u'];
$rss = fetch_rss($url);
$num = $_GET['n'];

//呼び出し時のオプション
//u : rssのURI
//n : 件数
//<!--#include virtual="./hoge.php?u=http://isaji.jp/diary/log/index.rdf&amp;n=2" -->
//みたいな感じ。この例では、ここの日記のRSSを取得して2件の概要を表示。

$site_title = $rss->channel['title'];
$site_title = mb_convert_encoding($site_title, "UTF-8", "auto");
$site_link = $rss->channel['link'];
$site_desc = $rss->channel['description'];
$site_desc = mb_convert_encoding($site_desc, "UTF-8", "auto");

echo <<<A
<h4><a href="$site_link" title="$site_title">$site_title</a></h4>\n
<p>$site_desc</p>\n
<dl>\n
A;

$rss->items = array_slice($rss->items, 0, $num);
foreach ($rss->items as $item) {
    $title = $item['title'];
    $title = mb_convert_encoding($title, "UTF-8", "auto");
    $url   = $item['link'];
    $date = $item['dc']['date'];
    $desc = $item['description'];
    $desc = mb_convert_encoding($desc, "UTF-8", "auto");
//contentモジュールで全文表示の場合はこっち。
//  $content = $item['content']['encoded'];
//  $content = mb_convert_encoding($content, "UTF-8", "auto");
echo <<<B
<dt><a href="$url" title="$title">$title</a>($date)</dt>\n
<dd><p>$desc</p></dd>\n
B;
}
echo <<<C
</dl>
C;
?>

自分で使うことしか考えてないからわりと適当。自鯖でしか動作の確認はしてません。参考にする場合は自己責任。もちろん改変転載すべて自由。私自身phpをよく分かってません。

動的に生成されるようなRSSの場合、RSSのURIに&が含まれていたりしますが、そのへんまでは考慮してません。

web - | comments (0) | trackbacks (0)