icon
icon

新着情報を受け取る!PHPでRSSを取得する方法【初心者向け】

初心者向けにPHPでRSSを取得する方法について解説しています。simplexml_load_file関数を使ってRSSを取得する書き方を紹介しています。実際にサンプルコードを書いているので、ぜひ参考にしてみてください。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

PHPでRSSを取得する方法について解説します。

RSSを取得する関数の使い方を紹介しているので、書き方を参考にしてみてください。

 

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPでRSSを取得する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

RSSとは

RSSは「Rich Site Summary(リッチ・サイト・サマリー)」の略です。

ブログサイトなどでRSSのアイコンを見かけたことがあるという方は結構多いのではないでしょうか。RSSとは簡単に言えば、「ブログやニュースが更新されたことを知らせるためのフォーマット」です。

今までお気に入りのサイトやブログが更新されたかどうかは、そのサイトに見に行かなければ気づけなかったのですが、RSSを利用することで更新された事が通知されるようになり、わざわざサイトへ行って確認する必要がなくなりました。

ブロガーやサイト管理者は、RSSのフォーマットに従ってXML形式でWebサイトの見出し・要約・更新内容などを入力し、それをRSSフィードと呼ばれるURLで公開します。

RSSを受け取る側は最新情報を受け取りたいサイトが発行しているRSSフィードをブラウザやRSSリーダーといったツールで登録します。

するとブラウザやRSSリーダーが定期的に登録しているRSSフィードに更新があったかどうか確認を行います。もし更新があればそのRSSフィードから情報を取得し教えてくれます。

このような仕組みでRSSを登録することで、登録したサイトの最新情報を受け取れるようになっています。

 

RSSを取得する関数

よく紹介されているのはsimplexml_load_file関数になります。

simplexml_load_fileの第一引数に取得したいRSSフィードのURLを設定すると、そのURLからXMLを読み込み、そのXMLを解析してSimpleXMLElementクラスのインスタンスに変換してくれます。

変換されたSimpleXMLElementインスタンスを操作して、柔軟にタグにアクセスして欲しい情報を取得できます。

ただ、simplexml_load_file関数だけでは対応できないケースがあります。

RSSの中にXMLに対して不正な文字が含まれていた場合に、パースエラーとなり解析失敗となります。

その際はfile_get_contents関数でRSSフィードを引数にして文字列としてXMLを取得し、取得した文字列から不正文字を削除し、simplexml_load_string関数でSimpleXMLElementクラスのインスタンスへ変換しましょう。

その後は、simplexml_load_file関数と同様になります。

 

[PR] PHPプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

ソースコード

// techacademyマガジンのRSSフィードからRSSを取得します
$feed = file_get_contents('https://techacademy.jp/magazine/feed');

// XML解析を行う上で、XMLで不正文字と扱われる対象を空文字に変換します
$invalid_characters = '/[^x9xax20-xD7FFxE000-xFFFD]/';
$feed = preg_replace($invalid_characters, '', $feed);

// 文字列をXMLとして解析して、SimpleXMLElementクラスのインスタンスに変換
$rss = simplexml_load_string($feed);

// 1つのアイテム(更新単位)毎に情報を出力します
echo('----------------------------------------'.PHP_EOL);

// $rss->channel->itemではまず、
// xmlタグの1階層下にあるchannelタグにアクセスし、
// 最終的にはそのchannelタグの1階層下にある複数のitemタグにアクセスしています
// 複数のitemタグは配列扱いとなっているため、foreachでループさせる事が可能です
foreach($rss->channel->item as $item){

    // itemタグの1階層下にあるtitleタグを取得します
        $title = $item->title;

    // itemタグの1階層下にあるpubDateタグを取得し、年月日に変換します
        $date = date(""Y年 n月 j日"", strtotime($item->pubDate));

    // itemタグの1階層下にあるlinkタグを取得します
        $link = $item->link;

    // itemタグの1階層下にあるdescriptionタグを取得し、HTMLタグだけを削除します
        $description = strip_tags($item->description);

    // それぞれの情報を出力します
    echo($title.PHP_EOL);       // タイトル
    echo($date.PHP_EOL);        // 更新日
    echo($link.PHP_EOL);        // リンク
    echo($description.PHP_EOL); // 概要
    echo('----------------------------------------'.PHP_EOL);
}
この記事を監修してくれた方

青木 敦史(あおきあつし)
昼間は自社のWebサービスを運営している会社でフロントエンド/バックエンドを担当しているエンジニア。

Webエンジニアの経験は5年ほどです。TechAcademyではPHP/Laravelコースを担当しています。
開発実績: メイクレッスン支援アプリ / 電力自由化パッケージ / 携帯電話料金計算 / ライブチャットサービス

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する