2012/03/31更新

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





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。