自分のサイトにRSSを取得・表示(PHP使用)日付表示と表示件数も指定

RSSは今やブログやニュースなど様々なところで利用されています。
そんな中、たとえば自分のブログの新着記事を自分のホームページに表示させたいことや、
お客さんのサイトにお客さんのブログなどを表示させたいことがあるかと思います。しかも自動で!(まぁRSSという概念からして当然ですが・・・)

ただその方法がいまいちわからないと言う人も多いのではないでしょうか。
少なくともこのページに来ている時点でそうだと思いますが・・・
設置自体はいたって簡単です。HTMLさえ多少知っていればOK。
使うのはインラインフレームとmagpieRSSというPHPのライブラリを利用すれば
簡単に自分のサイトに表示させることができます。※サイトトップindex.php等に直書きもできます。

重要なお知らせ(2012/9/13)————————————————————————
※2012/9/13より1ヶ月程度以内にダウンロードされた方は読んでください。その他の方はスルーしてOKです。
配布しているファイルにてrss.php内の
「日付が取得できない場合はこちらで配列を表示確認してキー(['pubdate']等)を確認」
の部分をコメントアウトして配布していたつもりでしたが、ここのコメントが解除されてしまっており、
動作させると配列の中身が表示され、ん?なんやこれ?と思うような文字列が表示されてしまっておりました。おそらくここ1ヶ月ほど。。。
あくまでもここは日付をうまく取得できない場合に確認するための記述だったんですが・・・。
「うまくいきました!」等のコメントはいただいておりましたが・・・完全に私のミスです。すいません。。。ん?おかしいなと感じたら遠慮なくコメントくださいm(_ _”m)ペコリ
※仕事で使う機会があり、ダウンロードして使ってみて発覚しました(汗
——————————————————————————————————————————

RSS表示サンプル⇒ このブログのRSSを取得、表示しています。

magpieRSSダウンロードは以下より

magpie RSS ダウンロード→
(アンチウィルスソフトチェック済)

本家サイト→ http://magpierss.sourceforge.net/(詳しく知りたい方は・・・どぞ)

ダウンロードしたらZIP形式に圧縮しているので解凍します。
解凍するとRSSという1つのフォルダができます。
この中でいじるのはmagpieフォルダ内のrss.phpだけです。他はおまけと思ってOKです。
index.htmlはサンプルでRSSを表示させるためのインラインフレームが書いてあるだけです。
※phpファイルなので、ローカルではphpが動く環境がないと動きません。
ローカルに環境が無い場合は、サーバーにアップしつつ表示を確認するしかありません。
※ローカルでPHPが動く環境が欲しい場合はXAMPPを強く推奨。5分もかからず構築できます。

1,RSSのURLを設定

まず、rss.phpをエディタソフトで開きます。※Terapad、DWなどで。メモ帳はもちろんNG。
$url =
という箇所があります。ここにRSSのURLを入ます。

RSSのURLがわからない場合は、
ブログやニュースなどにRSSというボタンがよくありますよね。
あそこを押したときにでるURL(アドレス)のことです。
ブログによってはRSSボタンを押すと意味不明な文字列に困惑しますが、
あれは人間が見るためではなくRSSを取得するための記述ですので、
文字列は気にせずURLだけをコピーしましょう。
URLの最後はrss.xmlやatom.xml、feedなどになることが多いです。
※追記 ライブドアブログはページ上にRSSボタン等が今現在無いようですね。。。
ライブドアブログのRSSももちろんあります。
ブログトップのURL/index.rdf がRSSのURLになります。

2,文字エンコードの設定(文字化けの原因はほぼここです)

$title = mb_convert_encoding($title, "UTF-8", "UTF-8");

と書かれているところが3箇所ほどあると思うので、
ファイル内のコメントを参考に必要に応じて変更してください。

3,その他RSSの設定をファイル内のコメントを参考に設定してください

RSSの表示件数の設定(デフォルトは10件にしています)などを設定してください。
ただし、これはブログ側の設定に依存します。記事の抜粋もデフォルトでは表示させてるので、必要に応じて非表示などの設定を。{$desc}が記事の抜粋です。要らなければ削除OKです。

4,サーバーにアップロード

それでサーバーにrssフォルダごとアップしてインラインフレームでrss.phpを読み込みます。
例)

<iframe src="rss/magpie/rss.php" height="200" width="100%" frameborder="0" ></iframe>

このタグをサイトの表示させたいところに挿入すればOKです。
(URLはおのおののサイトにあわせて設定ください。相対パスでも絶対パスでもOKです)
そのほかrss.phpの中にhtmlのタグが記述されていますので、ここはタグやスタイルシートを使って自由に編集できます。

PHPではechoのあとがブラウザに出力されます。
なのでこの場合かなり自由にいじることができます。
(いじらなくてもデフォルトでいい感じで表示されるように設定していますが)
また、スラッシュ2つ「//」以降行末までコメント扱いになります。

サイトのトップページ等がphpファイルであれば直書きも可能です。
直書きの場合は、下記パスを変更する必要が出ると思います。
変更例

require_once('rss_fetch.inc');
↓
require_once('rss/magpie/rss_fetch.inc');

日付が1970年1月1日等になる場合

日付は複数のブログの仕様に応じて表示するよう設定していますが、
もし1970年1月1日等になる場合は
rss.phpファイル内の

print_r($item);

をコメントを解除し、ブラウザで表示させてみてください。
すると

 [link] => http://www.kens-web.com/2012/05/1616 [comments] => http://www.kens-web.com/2012/05/1616#comments [pubdate] => Sun, 06 May 2012 12:11:37 +0000 [dc] => Array ( [creator] => ken ) [category] => 日記を書く俺 [guid] =>

のような一見意味不明な(笑)文字列が表示されると思うので、ここで日付が表示されている部分を確認します。上記の例では[pubdate] => Sun, 06 May 2012 12:11:37 +0000
になり、配列の[pubdate] キー(と言います)に日付が入っていることがわかります。
このキー(上記の場合、[pubdate] )を
PHPファイル内の

$up_ymd = $item['date_timestamp'];

部分を

$up_ymd = $item['pubdate'];

とすればOKなはずです。簡単でしょ?w
すべてのブログで確認したわけではないけどWordpress、アメブロなどでは変更の必要なく表示できてます。

文字化けする・・・という方は・・・

rss.php内に下記記述があると思いますが、
これはPHPのmb_convert_encoding関数と呼ばれるもので、文字エンコードの変換を行います。
mb_convert_encoding(対象の文字列, “変換後のエンコーディング”, “変換前のエンコーディング”);
で、砕いて言うと
(変換元の文字列, RSSを表示させるページの文字コード, RSSの文字コード)
になります。RSSはUTF-8であることが多いと思いますが、表示するページがShift-JISであれば

mb_convert_encoding($title, "SJIS", "UTF-8");

とすればOKということになります。もしくは適当に組み合わせて文字化けしなきゃOKということです(笑)
まれにサーバーのPHPのバージョンなどによってはmb_convert_encoding関数が使えないということがあるかもですが、果たして今時あるんだろうか。。。ということで割愛。。。一応キーワードとしては「jcodeを使う」です。

この関数の詳細については以下が公式マニュアルになります。
初めて見る人はなんのこっちゃ(笑)と思いますが・・・
http://php.net/manual/ja/function.mb-convert-encoding.php

記事の内容が近いもの:

  1. PHP画像認証付き掲示板
  2. PHPカウンター フリー(著作権表示なし)テキスト版と画像版
  3. PHP 新着情報・ニュースプログラムver.1 (ホームページのお知らせなどに最適)フリー
  4. PHP 画像アップ,文字装飾,HTML編集機能付 新着情報・ニュースプログラム フリー
  5. PHPメールフォーム お問い合わせ用プログラム フリー(無料)

カテゴリー: フリーのPHP配布してます!   パーマリンク

自分のサイトにRSSを取得・表示(PHP使用)日付表示と表示件数も指定 への5件のコメント

  1. 浅沼比呂樹 より:

    始めまして、浅沼と申します。自サイトにブログの更新情報を掲載したいと試行錯誤しておりましたら貴サイトが非常に分かりやすかったのでお礼申し上げます。いっぱい類似記事がありますがターゲットが上級者で、分からない事が増えていくばかりでした。大変勉強になりました。ありがとうございます。(記事は一体誰が読むのか、という勉強にもなりました。)

    • ken より:

      お役に立てて光栄です。。。^^;
      ちなみに最近記事内容とプログラムの一部を改変し、日付表示も可能としました・・・今更かもしれませんが・・・

      記事の書き方は・・・確かにそうですね。
      伝わらなければ無いのと一緒ですからね・・・
      確かに自分用の記事だったりもあるかもしれませんが、
      どうせ書くなら分かり易いに越したことはありませんよね。

      普段から考えている理想は・・・・
      うちの母親が理解できないものは無いのと同じ。。。です(笑)
      なのでうちの母親にとってWindowsは無いも同然です。=PC買ってよくわからずそのまま放置なので(脱線(笑)

      手間はかかるかもしれませんが、これからもなるべく分かり易い記事を心がけたいと思います。
      コメントありがとうございます。

  2. 野村博 より:

    とても有意義な内容でとても感銘を受けております。
    さて…実際に設置してみて
    記事本文の抜粋文字数を調整するにはどうすればいいだろう…?と疑問に思いましたが何か解決策はありますか?

    • 野村博 より:

      「mb_strimwidth」で自己解決しました。

      • ken より:

        はい。まさにそれですね^^;必要は最大のなんとかって言いますが、
        とにかく解決されてなによりです~