【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

MagpieRSS - PHP で使える RSS パーサー。

目次

PHP で使える RSS パーサー。 PHP でリモートの RSS を取得、解析、そしてキャッシュまで全部やってくれる。RSS0.9 と RSS1.0 に対応。

http://magpierss.sourceforge.net/

使い方

例えば index.php に http://www.hyuki.com/yukiwiki/wiki.cgi?RssPage のヘッドラインを埋め込むとして手順を示します。

 <?php
 require_once 'rss_fetch.inc';
 $url = 'http://www.hyuki.com/yukiwiki/wiki.cgi?RssPage';
 $rss = fetch_rss($url);
 $title = $rss->channel['title'];
 $title = mb_convert_encoding($title, "SJIS", "auto");
 echo "<h2>$title</h2>\n";
 echo "<ul>\n";
 foreach ($rss->items as $item ) {
 $title = $item[title];
 $title = mb_convert_encoding($title, "SJIS", "auto");
 $url   = $item[link];
 echo "<li><a href=\"$url\">$title</a></li>\n";
 }
 echo "</ul>\n";
 ?>

解説

	$url = 'http://www.hyuki.com/yukiwiki/wiki.cgi?RssPage';

この行は取得する RSS ファイルの URL を指定しています。適宜変更してください。

	$title = mb_convert_encoding($title, "SJIS", "auto");

この行は日本語文字コードを変換している部分です。 "SJIS" の部分は index.php の出力文字コードにあわせて SJIS, EUC-JP, JIS, UTF-8 の中から指定します。

ここで紹介したやりかたがどういう環境に依存するものか(日本語変換など)把握しきっていないのですが、 とりあえず XREA.COM (http://www.xrea.com/) では動作を確認しています。

PHPHTML に埋め込む形で記述できるので、 今普通に運営しているサイトに RSS のヘッドラインを取り込みたいという場合でも少しの変更ですむと思います (もしサーバが PHP に対応していれば)。

MagpieRSS は取得、解析、キャッシュまで全部お任せにできるので、 一から自分で作るよりはこれを利用してしまったほうがはやいでしょう。

解説2(Jcode.phpを使う方法 - mb_convert_encodingが使えない場合の解決法その1)

 <?php
 require_once 'rss_fetch.inc';
 require_once 'code_table.ucs2jis';
 require_once 'jcode.php';
 $url = 'http://www.hyuki.com/yukiwiki/wiki.cgi?RssPage';
 $rss = fetch_rss($url);
 $title = $rss->channel['title'];
 //JcodeConvert($str, $from, $to) 0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8
 $title = JcodeConvert($title, 0, 2);
 echo "<h2>$title</h2>\n";
 echo "<ul>\n";
 foreach ($rss->items as $item ) {
 $title = $item[title];
 $title = JcodeConvert($title, 0, 2);
 $url   = $item[link];
 echo "<li><a href=\"$url\">$title</a></li>\n";
 }
 echo "</ul>\n";
 ?>

補足: PHP Notice: Use of undefined constant link - assumed 'link'/'title' について

 $item[title]を$item['title']に、$item[link]を$item['link']に直すと出なくなります。

コメント