[Tool] RSSを生成するPHPプログラムを作ってみた!ソースコードも公開します
最近、YoheiM.NETでRSSの配信を始めました(*´∇`*)
RSSを配信しようと思ったけど、RSSを生成していない事に気付いた。WordPressとか使ってたら簡単に出来るんだろうなぁ。 でも使ってない。
またRSSを作成してくれるツールも公開されていましたが、年の経過とともに無くなるツールも多そう。
RSSの中身を見ると、そんなに大変そうじゃなかったので、PHPでRSSジェネレータを作りました。
RSSについて
RSSはブログなどの更新を配信する為のフォーマットです。RSSにはバージョンがいくつかありますが、今回はRSS2.0を利用しました。
RSSの詳細は、Wikipedia: RSSを参照ください、
RSSを生成するPHPモジュール
以下のような感じの処理の流れで、RSSを作成しました。1、RSSのヘッダーを作成する。
2、RSSのデータ部分を好きな数だけ作成する。今回は10個。
3、RSSの締めタグなどを作成する。
4、RSSファイルとして認識されうるファイルを、3個くらい出力する。
ソースコードの全体は以下です。
<?php /* * RSS用のフィードを作成するCGIファイル。 * index.xml, atom.xml, index.rdfのファイルを作成する。 */ $RSS_FEED_NUM = 10; // RSSのフィード数 // 1、RSSのヘッダーを作成する。 $rss = ''; $rss = $rss . '<?xml version="1.0" encoding="utf-8" ?>'; $rss = $rss . '<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" ' . 'xmlns:content="http://purl.org/rss/1.0/modules/content/" xml:lang="ja">'; $rss = $rss . '<channel>'; $rss = $rss . '<title>YoheiM.NET - 世の中をさらに便利に、面白く</title>'; $rss = $rss . '<link>http://www.yoheim.net/</link>'; $rss = $rss . '<description>YoheiM.NET - 世の中をさらに便利に、面白く</description>'; $rss = $rss . '<dc:creator>yoheiM</dc:creator>'; // 2、RSSのデータ部分を好きな数だけ作成する。今回は10個。 // フィードに出力するファイルパスの配列を取得する。 $file_list = getFeedList(); // FEED数分作成する for ($i = 0; $i < $RSS_FEED_NUM; $i++) { // ブログタイトルを取得する $fPath = $file_list[$i]; $f = fopen($fPath, "rb"); $title = fgets($f); fclose($f); $title = getTitle($fPath); // blogのURLを取得する $blogURL = getURL($fPath); // ブログの中身を取得する $content = ''; $fPath = $file_list[$i]; $fp = fopen($fPath, "rb"); while (!feof($fp)) { $buf = fgets($fp); $content = $content . $buf; } fclose($fp); // 作成日時を作成する // ここでは、ファイルの更新日付を使う date_default_timezone_set('Asia/Tokyo'); $pubDate = date("D, d M Y H:i:s", filemtime($fPath)); // Feed作成 $item = ''; $item = $item . '<item>'; $item = $item . '<title>' . $title . '</title>'; $item = $item . '<link>' . $blogURL . '</link>'; $item = $item . '<description><![CDATA['; $item = $item . $content; $item = $item . ']]></description>'; $item = $item . '<dc:creator>yoheiM</dc:creator>'; $item = $item . '<pubDate>'. $pubDate . '</pubDate>'; $item = $item . '</item>'; $rss = $rss . $item; } // 3、RSSの締めタグなどを作成する。 $rss = $rss . '</channel>'; $rss = $rss . '</rss>'; // 4、RSSファイルとして認識されうるファイルを、3個くらい出力する。 $f = fopen("index.xml", "wb"); fwrite($f, $rss); fclose($f); $f = fopen("atom.xml", "wb"); fwrite($f, $rss); fclose($f); $f = fopen("index.rdf", "wb"); fwrite($f, $rss); fclose($f); // end echo "OK\n"; ?>
最後に
PHPでXML作るならもっとカッコ良く出来るけど、こんな感じにべたにやるのも良いですね。あとツールを自分で作ると、自由自在にカスタマイズ出来るのも嬉しい。 今後も色々と自作ツールを作ってみよっと(((o(*゚▽゚*)o)))