*

phpでRSSを取得して読み込む方法

公開日: : 最終更新日:2014/08/01 php


ブログなどで新着記事の配信に利用されているRSSをphpで読み込んで表示する方法について掲載します。
本ブログでもRSSを配信していますので、KOATRANDOMホームページでは今回掲載する方法を利用して、ブログの新着情報をページトップに乗せています。

 

RSSとは

RSSは、ニュースやブログなど各種のウェブサイトの更新情報を簡単にまとめ、配信するための幾つかの文書フォーマットの総称です。RSSのフォーマットは現在分裂状態にあり、1.0と2.0、Atomといった系列に分かれています。

詳しくはWikipedia参照

 

RSSの読み込み

phpでRSSを読み込むには次の関数を利用します。

simplexml_load_file
・xmlファイルをパースしてオブジェクトに代入します

simplexml_load_string
・xml形式のストリングをパースしてオブジェクトに代入します

 今回はsimplexml_load_fileを使用します。

 

実装

xmlファイルを文字列として読み込みます

$xml_string = file_get_contents("rssのURL");

 

読み込んだxmlファイルの中から不要な文字列を取り除きます(simplexml_load_stringをするときにエラーとなるため。)

$xml_string = preg_replace('/[\x00-\x1f]/', '', $xml_string);

 

xml形式の文字列をパースしてオブジェクトに読み込みます

$xml = simplexml_load_string($xml_string);

 

オブジェクトから値を取得します
RSSのバージョンによってオブジェクトの構造が異なりますので取得の仕方には注意が必要です。

rss 2.0の場合

//サイトタイトルの取得
$sitetitle = (string)$xml->channel->title;
//サイトURLの取得
$siteurl = (string)$xml->channel->link;
//サイトの最終更新日付の取得
$sitedate = new DateTime($xml->channel->lastBuildDate);
$items = array();
//記事毎にループさせて取得
foreach($xml->channel->item as $value) {
  $item = array();
  //記事のタイトル
  $item['itemtitle']  = (string)$value->title;
  //記事のURL
  $item['itemlink'] = (string)$value->link;
 //記事の詳細
  $item['description'] = (string)$value->description;
  //記事の更新日時
  $item['itemdate'] = new DateTime($value->pubDate);
  $items[] = $item;
}

 

rss 1.0の場合

//サイトタイトルの取得
$sitetitle = (string)$xml->channel->title;
//サイトURLの取得
$sitelink = (string)$xml->channel->link;
//サイトの最終更新日付の取得
$sitedate = new DateTime($xml->channel->children('http://purl.org/dc/elements/1.1/')->date);
$items = array();
foreach($xml->item as $value){
  $item = array();
  //記事のタイトル
  $item['itemtitle'] = (string)$value->title;
  //記事のURL
  $item['itemlink'] = (string)$value->link;
 //記事の詳細
  $item['description'] = (string)$value->description;
  //記事の更新日時
  $item['itemdate'] = new DateTime($value->children('http://purl.org/dc/elements/1.1/')->date));
  $items[] = $item;
}

 

以上です。あとは配列から値を取得して、サイトの表示などに利用します。

RSSで記事配信をしているサイトは無数にあるので、上記の方法を利用して簡易的なRSSリーダーであれば、簡単に作れると思います。

 

ad_right_top

関連記事

blog_logo_small

php:配列の要素を連結して文字列出力[implode]

ログ出力などで配列の中身を出力したい場合に、簡単に配列を連結して文字列化する方法です。 &nb

記事を読む

blog_logo_small

php:ファイルの更新日時を取得し、クエリとして付与する

cssやjsを更新した際に、キャッシュされてしまい表示が更新されないという事が良くあると思います。更

記事を読む

blog_logo_small

intl PEC のインストール

MediaWikiの利用において「intl pecl 拡張機能」を使用する場合はインストールが必要で

記事を読む

blog_logo_small

phpフレームワーク — Laravelのご紹介

webサービスの構築をおこなうにあたり、どのような言語/ミドルウェアを利用するかは作成するサービスの

記事を読む

blog_logo_small

php:文字列分割関数explodeとpreg_splitの速度について

以前の記事で文字列分割を行うexplodeとpreg_splitを紹介した際に、explodeの方が

記事を読む

blog_logo_small

php:バージョンの確認方法

インストールされているphpのバージョンを確認する方法です。   コマンドで確認す

記事を読む

blog_logo_small

php:文字列内で対象が現れる場所を見つける[strpos]など

文字列内の部分文字列検索。用途に合わせて色々と関数が用意されているので記憶の片隅に置いておくと良いか

記事を読む

blog_logo_small

php:関数の命名について

DBに登録されている日時と現在日付から5日前である事をチェックする関数名で 下記で一番わかりや

記事を読む

blog_logo_small

php:配列でキーの存在確認をする方法

ソースを書いていて何度が調べることがあったので備忘の為に残しておきます。   配列

記事を読む

blog_logo_small

php:GD画像ライブラリのインストール

MediaWikiを利用する上で、画像のサムネイル表示を使う場合はインストールが必要となります。

記事を読む

google以外広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

ad_right_top

linux-pen
【cron】秒間隔で定期実行する為の設定方法

コマンドを定期実行させたい場合に利用するcronですが、普通に利用する

blog_logo_small
【Apache】 ReverseProxy(リバースプロキシ)を設定してサブディレクトで別サーバーの内容を表示

今回はApacheのリバースプロキシ設定について紹介したいと思います。

blog_logo_small
【Apache】 Aliasを設定してサブディレクトでDocumentRoot以外を参照する

今回はApacheのAlias設定について紹介したいと思います。この方

no image
2015:新年のご挨拶

明けましておめでとうございます。 昨年はたくさんの方々に当ブログ

blog_logo_small
MySQL:外部ホストからのDBアクセス方法

MySQLではデフォルトで外部ホストからのアクセスを許可していないので

→もっと見る

  • アクセスカウンター
PAGE TOP ↑