PHPでアメブロの新着記事一覧をRSSフィードから取得するコード

クライアント様のWEBサイトをリニューアルなどで再構築する際、「外部で既に運用しているブログ(アメブロ等)の新着情報をWEBサイトに表示させたい!」との相談が稀にあります。
今回はPHPでアメブロの新着記事一覧をRSSフィードから取得するコードを簡潔にご紹介します。
アメブロのRSSを読み込むPHPコード
まずは下記コードをそのままPHPの表示したい部分にコピーしてください。
<?php //読み込みたいRSS FeedのURL $RSSpath = "http://rssblog.ameba.jp/[アメブロID]/rss20.xml"; $XML = simplexml_load_file($RSSpath); $return_html = "<ul>"; $entry_date = ""; $i = 0; foreach($XML->channel->item as $entry) { if($i >= 5) { //表示したい件数 5件 break; }else{ $title = $entry->title; //【記事タイトル】 $entry_date = date('Y年m月d日', strtotime($entry->pubDate)); //【投稿日】 $link = $entry->link; //【記事リンク】 //出力する html $return_html.='<li>・<span class="top-date">'. $entry_date.'</span> <a href="'.$link.'" target="_blank">'. $title.'</a></li>'; $i++; } } $return_html .= "</ul>"; echo $return_html; ?>
ご自分の環境に合わせて、コード内の編集が必要な部分を適宜変更します。
コードの解説
① 3行目:読み込むRSSフィードを指定
コード3行目の$RSSpathに、読み込みたいRSSフィードのURLを文字列として格納します。
ブログ毎のRSSフィードはhttp://rssblog.ameba.jp/[アメブロID]/rss20.xmlで出力されています(正常に出力されているか、ブラウザで一度確認されることをオススメします)。
例:http://rssblog.ameba.jp/tao-tsuchiya/rss20.xml
↑Google Chromeの場合、画像のようにRSSフィードのコードが表示されればOKです。

② 10行目:表示したい件数を指定
10行目のif条件式に、表示したい新着記事の件数を指定します。
③ 13〜15行目:取得したい項目を変数に格納
上記コードの13〜15行目では、RSSフィードに設定されている記事のタイトル・投稿の日付・記事リンクをそれぞれ変数に格納しています。
アメブロではそれ以外にも、記事の本文の一部を$entry->descriptionで取得できます。必要であれば任意の変数を用意し、取得してください。
④ 18行目:出力するHTMLをまとめる
③で取得した各項目の変数とHTMLタグを連結させ、ひとつの文字列として$return_htmlにまとめます。このPHPコードでは最終的に下記のHTMLコードとして出力されます。
<ul> <li>・<span class="top-date">2017年1月1日</span><a href="◯◯◯" target="_blank">[記事のタイトル]</a></li> <li>・<span class="top-date">2017年1月1日</span><a href="◯◯◯" target="_blank">[記事のタイトル]</a></li> <li>・<span class="top-date">2017年1月1日</span><a href="◯◯◯" target="_blank">[記事のタイトル]</a></li> </ul>
こちらも導入する環境によって適宜コードを変更します。
DEMO
下記のようにアメブロの新着記事が一覧で表示されれば完了です。
おまけ:HTMLファイルに表示したい場合
RSSを読み込むだけのPHPファイルを作り、HTMLに埋め込む
静的なHTMLファイルに新着RSSを表示したい場合は、当記事のPHPコードだけを記述したPHPファイルを単体で用意し、HTMLにインラインフレームで埋め込み、またはjQueryの.load()関数で指定した場所に読み込みます。
<script> $(function(){ $('#feed').load('RSSフィードを読み込んだphpファイルまでのパス'); }); </script>
これで<div id="feed"></div>の中に新着記事一覧が表示されるようになります。
jQueryだけでRSSフィードを取得
上記のPHPファイルで埋め込む方法が手間な場合は、jQueryだけでもRSSフィードを読み込むことができます。こちらはまた別の記事でご紹介しようと思います。
まとめ
比較的古いやり方であることは承知の上でご紹介していますが、例えば何らかの理由でjQueryが使用できないが、サーバー的にPHPは使える場合など限定的な状況で使えそうなのでご紹介しました。SEO的なことを無視すれば、インラインフレームでこのPHPを読み込めばひとまず実現は可能です。
また今回はアメブロの新着RSSの読み込みをご紹介しましたが、XMLの構造を理解していれば他の外部ブログ(FC2ブログやMTのブログなど)の新着情報も表示可能です。ぜひ一度使ってみて下さい。
ディスカッション
コメント一覧
どうも初めまして。
アメブロRSSから取得して、別サイトへ読み込んでいるのですが、最近タイトルが文字化けするようになりました。
対処方法ありましたら、ご教授いただけますと助かります。