読込んだRSSをサイトに出力(PHP)

PHPによるRSSフィードの読込と出力方法

情報発信サイトの動向を自動で取得したい!そんな時に使うのがRSS、今回は(も?)気象庁の情報をいち早く取得してみます。

RSSのURL取得と構造について

RSSの出力(feed)URLを取得します。

images
出典:気象庁ホームページ (http://www.jma.go.jp/jp/week/)

対象をテキストエディタで開いてみましょう。
構造はXML形式で1つの記事について「title」、「link」、「language」、「lastBuildDate」、「generator」、「docs」というタグを出力しています。

image02

※画像が小さくて見えないのでニュースを1つだけ複写。

<item>
  <title>霧島山(えびの高原(硫黄山)周辺)の火口周辺警報(噴火警戒レベル2、火口周辺規制)を解除</title>
  <link>http://www.jma.go.jp/jma/press/1701/13b/ebinokogen170113.html?90</link>
  <guid>http://www.jma.go.jp/jma/press/1701/13b/ebinokogen170113.html?90</guid>
  <pubdate>Fri, 13 Jan 2017 14:00:00 +0900</pubdate>
  <dcterms:modified>2017-01-13T14:00:00+09:00</dcterms:modified>
  <dcterms:created>2017-01-13T14:00:00+09:00</dcterms:created>
  <description>< ![CDATA[「霧島山(えびの高原(硫黄山)周辺)の火口周辺警報(噴火警戒レベル2、火口周辺規制)を解除」を掲載しました。]]></description>
</item>

今回はこのFEEDをPHPで読み込み、ページに出力してみます。

PHPで読み込む

上記にある通りXMLファイルには幾つもタグで管理されている情報があります、これらをタグごとに分解(パース)して用意したオブジェクトに代入していきます。

取得対象を下記とします

  • title・・・タイトル
  • link・・・リンク
  • pubDate・・・日付
  • description・・・記事詳細

PHP
PHPの関数「simplexml_load_file」を使いXML(取得したRSS)を料理します。

<?php
$rssfeed = simplexml_load_file('http://www.jma-net.go.jp/rss/jma.rss');
echo '<ul id="feedOut">';
foreach($rssfeed->channel->item as $items){
  $title = $items->title;
  $date = date("Y/n/j ", strtotime($item->pubDate));
  $link = $items->link;
  $description = mb_strimwidth (strip_tags($items->description), 0 , 20, " …続きはこちら", "utf-8");
?>

<li>
  <span class="date"><?php echo $date; ?></span>
  <a href="<?php echo $link; ?>" target="_blank">
    <span class="title"><?php echo $title; ?></span>
    <span class="text"><?php echo $description; ?></span>
  </a>
</li>
<?php }  echo '</ul>'; ?>

出力結果