[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)))





