scribble warehouse

simplexmlを使って、ブログのRSSを読み込む


n_20150220_001

自分のサイトでは趣味やオリジナルの作品を紹介し、雑記などの更新にレンタルブログを利用している、というパターンを多く見かけます。
通常は、自分のサイトにブログへのリンクを貼っていると思いますが、PHPを使用して、サイトにレンタルブログの新着記事を表示する方法を紹介します。

!他人の記事やニュースサイトを読み込んで表示するのは著作権法に触れる恐れがあります!
!必ず許可を取るか、自分のサイトに自分のブログ記事を載せるためだけに使用してください!

今回紹介する方法を使う条件として、
・PHPの知識が少しでもあること(HTMLにPHPプログラムを記述するルールや記述の仕方など)
・自分のサイトをアップロードしているサーバー(レンタルサーバーなど)が、PHP5.0以上であること
・レンタルブログのRSSのURLを確認できる(たいていは、サイドバーの下の方にRSSのリンクがあります)
が挙げられます。
レンタルサーバーでPHPの使用が可能か、またはどのバージョンが使用可能か、はサーバーのサイトで確認できます。

ちなみに、今借りているレンタルサーバーがPHPに対応していない、という方には、「ロリポップ!レンタルサーバー」をおすすめします。



今回紹介するのは、あくまでもサイトとレンタルブログが全く別のところにある場合の方法ですが、WorePressブログなどの設置もとても簡単なので、どうせならブログもサイトもひとまとめにしたい、という方にもおすすめです。
このブログも、ロリポップ!レンタルサーバーを利用して運営しています。

 
さて本題の「自分のサイトにレンタルブログのRSSを載せる方法」ですが、ちょっと難しいです。
1.レンタルブログのRSSリンクを確認し、その構造を調べる
2.PHPを使ってRSSの情報を読み込み、HTMLとして表示させる
と、手順は簡単なので、一般的なRSS構造をとった、FC2ブログを例に挙げながら紹介します。

 
1.レンタルブログのRSSリンクを確認し、その構造を調べる
RSSのソースを開き、記事の情報がどういう構造になっているか調べます。

<item>
  <link>記事のURL</link>
  <title>記事のタイトル</title>
  <dc:date>投稿時間(日本時間の例:2015-01-01T12:00:00+09:00)</dc:date>
</item>

といった内容(他にもたくさんある)が上記のタグ構成で表示されます。

 
2.PHPを使ってRSSの情報を読み込み、HTMLとして表示させる
PHP5.0で登場した、simplexmlを使います(変数はわかりやすければ何でも良いです)
下記のコードを、新着記事を表示したい部分のHTMLに直接書き込みます。

<?php
  /* RSSを読み込む設定 */
  $rssurl = “RSSのURL”;
  $rssdata = simplexml_load_file($rssurl);
  $counter = 0;
  $readnunber = 読み込みたい新着記事の件数;

  /* RSSを抜き出して変数に入れる */
  foreach ($rssdata->item as $item) {
    $title = $item->title; // 記事のタイトルを取得
    $link = $item->link; // 記事のリンクを取得
    $dc = $item->children(‘http://purl.org/dc/elements/1.1/’); // dc:〜の情報を読み込む
    $date = $dc->date; // 投稿の日付を取得(上記例の記述になる)
    $str_month = substr($date, 5,2); // $dateの4文字目から2文字抜き出す(何月)
    $str_day = substr($date, 8,2); // $dateの8文字目から2文字抜き出す(何日)
    $date = $str_month.”/”.$str_day; // 繋げて、01/01の形にする

    /* HTMLタグに変換する(ここではliタグを使ってます) */
    echo "<ul>\n";
    if($counter<$readnumber){ // 設定した件数まで記事を繰り返し取得し、HTMLにします
      echo "<li> $date <a href=\"$link\" >$title</a></li>\n";
      $counter++;
    }
    echo "</ul>\n";
  }
?>

 
最終的に以下のHTMLが表示されます(設定した件数分)

<ul>
  <li>投稿の日付 <a href="記事へのリンク">記事タイトル</a></li>
    ・
    ・
    ・
</ul>

if文を使って特定のカテゴリーの記事のみを抜き出したり、echoで表示させるliタグにCSSを適用することもできるので、自分のサイトに合った表示スタイルにすることが出来ます。

ちょっとどころか、かなり難しい(めんどくさい)作業でしたね。
PHPも含め、プログラミングはちょっとの記述ミスで全く機能しなくなるので注意が必要ですが、上手く使えば、動的かつ「生きた」サイトになることでしょう。

大事なことなので2度言いますが、
!他人の記事やニュースサイトを読み込んで表示するのは著作権法に触れる恐れがあります!
!必ず許可を取るか、自分のサイトに自分のブログ記事を載せるためだけに使用してください!


Tagged on: , ,