さんまがおいしい季節だねー(´・ω・`)

忙しい人のための RSS 実装講座 for PHP

PHP — タグ: , — さくら @ 2009/05/18 18:42

ぐーむ、検索エンジンっていまいち役に立たないのね。「ただしイケメンに限る」で検索しても※ただしイケメンに限るに辿り着けないんですものwww

で、※ただしイケメンに限るのはてブのコメント見てたら RSS 実装要求が多いみたいだったから、今日は忙しい人のための摩訶不思議アドベンチャー【Full】を聞きながら2分で実装できる RSS 実装方法 for PHP をお送りするわね。

規格を決める

まず RSS は RSS2.0 を使うこと。何でかって?
楽だからに決まってんじゃないの。何が楽かって?
忙しいんだったらそんないちいち質問しないの。おとなしく言うこと聞いとけばいいのよ。

RSS を出力する

規格を決めたら RSS2.0 で出力する方法を覚えるのよ。っつっても細かい説明をいちいち聞く時間なんて無いと思うから、とりあえずこのコードをコピペしてから、各変数を埋めなさい。埋め方はコードの後で説明するわ。

<?php
function _e($s) {
    echo htmlspecialchars($s);
}
echo '<'.'?xml version="1.0" encoding="utf-8"?'.">\n";
?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title><?php _e($TITLE) ?></title>
  <link><?php _e($HOMEPAGE_URL) ?></link>
  <atom:link href="<?php _e($RSS_URL) ?>"
        rel="self" type="application/rss+xml" />
  <description><?php _e($DESCRIPTION) ?></description>
  <language>ja</language>
  <lastBuildDate><?php _e(date("r"), $UPDATED) ?></lastBuildDate>
<?php foreach ($RSS_ITEMS as $item) : ?>
  <item>
    <title><?php _e($item['TITLE']) ?></title>
    <link><?php _e($item['URL']) ?></link>
    <guid><?php _e($item['GUID']) ?></guid>
    <pubDate><?php _e(date("r", $item['DATE'])) ?></pubDate>
    <description><![CDATA[<?php echo $item['CONTENT'] ?>]]></description>
  </item>
<?php endforeach ?>
</channel>
</rss>

各変数に設定する値の説明よ。

$TITLE
ウェブサイトとかブログのタイトル。
$HOMEPAGE_URL
ウェブサイトとかブログの URL。
$RSS_URL
RSS の URL。
$DESCRIPTION
ウェブサイトとかブログの概略説明。
$UPDATED
データが更新された日付。 (UNIX タイムスタンプ)
$RSS_ITEMS
以下の要素の連想配列からなる RSS エントリの配列。

$item['TITLE']
エントリのタイトル。
$item['URL']
エントリのウェブページの URL。
$item['GUID']
エントリの ID。1エントリに対して URL が一つあるのなら $item['URL'] と同じ。同一 URL に対して複数エントリを作るなら $item['URL'] . ‘#’ . $id 等で ID を指定すれば良い。
$item['DATE']
エントリの更新日時。(UNIX タイムスタンプ)
$item['CONTENT']
エントリの中身を HTML で全部。

この説明に従って値をセットしたら RSS が出来上がるわ。
細かいところが微妙に分かんなかったら、AZlink +trends の RSS とか見たらいいんじゃない?基本的に同じ出力の仕方してるから。

とりあえず動かしてみるだけなら、上のソースを rssgen.php で保存してから、こんな感じの呼び出し側のソース作るのが手っ取り早いと思うわよ。
あ、言い忘れたけど、全部 UTF-8 で書くのよ。文字コード変えるんだったら、xml 宣言も変えないといけないわよ。

<?php
$TITLE = 'テスト';
$HOMEPAGE_URL = 'http://www.example.com';
$RSS_URL = 'http://www.example.com/rss';
$DESCRIPTION = 'RSS のテストです。';
$UPDATED = time();
$RSS_ITEMS = array(
    array('TITLE' => 'テストエントリ1',
          'URL' => 'http://www.example.com/entry',
          'GUID' => 'http://www.example.com/entry',
          'DATE' => time(),
          'CONTENT' => '<p>RSS のテストエントリ1</p>')
);
require 'rssgen.php';
?>

こいつの出力はこんな感じね。

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>テスト</title>
  <link>http://www.example.com</link>
  <atom:link href="http://www.example.com/rss"
        rel="self" type="application/rss+xml" />
  <description>RSS のテストです。</description>
  <language>ja</language>
  <lastBuildDate>Mon, 18 May 2009 19:10:41 +0900</lastBuildDate>
  <item>
    <title>テストエントリ1</title>
    <link>http://www.example.com/entry</link>
    <guid>http://www.example.com/entry</guid>
    <pubDate>Mon, 18 May 2009 19:10:41 +0900</pubDate>
    <description><![CDATA[<p>RSS のテストエントリ1</p>]]></description>
  </item>
</channel>
</rss>

ちなみにこの RSS、W3C Feed Validation Service, for Atom and RSS でもちゃんとエラー無しで通るわよ。さくらが作ったんだから当然よね。


でもロプたんは RSS の出力方法とか知ってるはずだから、このエントリって誰向けに書いたのかいまいちさくらもよく分かんないのよね…
アクセスガタ落ちしたんで、とりあえず何か書いとかないと、と焦ってたりはするwww

さくら

6件のコメント »

  1. 忙しい人のための RSS 実装講座 for PHP | さくらたんどっとびーず

    コメント by gucci uk — 2013 年 7 月 21 日 @ 17:48
  2. I think the admin of this web page is in fact working hard for
    his site, since here every information is quality based information.

    コメント by l'carnitina liquida — 2014 年 9 月 23 日 @ 07:46
  3. I have read so many articles or reviews regarding the blogger lovers except this
    post is truly a pleasant article, keep it up.

    コメント by AMELIE — 2014 年 10 月 1 日 @ 04:38
  4. You’re so interesting! I don’t think I’ve truly read something like this before.
    So wonderful to find another person with a few unique thoughts on this topic.

    Seriously.. many thanks for starting this up. This web site is
    something that is required on the web, someone with a little
    originality!

    コメント by dino storm hack — 2014 年 10 月 4 日 @ 08:22
  5. My relatives every time say that I am wasting my time here at web,
    but I know I am getting know-how daily by reading thes nice articles or reviews.

    コメント by Car Town Hack — 2014 年 10 月 4 日 @ 12:12
  6. jSgNQtkNOcTohLtSQW 8001

    コメント by mMvZsdPKHwxBvyg — 2014 年 10 月 5 日 @ 17:45

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

Copyright © 2017 さくらたんどっとびーず | powered by WordPress with Barecity