RSSを取得して一覧表示させた時のメモ。格納フィード名で苦戦したが攻略した。

電脳備忘録

本記事のソースコードの利用によって生じた損害について、当方は一切の責任を負いません。ご自身の判断と責任のもとで参照・ご利用ください。

この記事は最終更新から6年以上経過しています。

rssを取得して記事タイトル、公開日、サムネイル、デスクリプション、記事URLを取得したかったのだけれど、サムネイルのURLが格納されているフィード名が「media:thumbnail」となっていて取得することができなかった。
str_replaceでmedia:thumbnail"を"thumbnail"と置換してからxmlを読み込むことで取得できるようになったけれど、日本語の情報にたどり着くことはできなかった・・・。
まぁ解決できたからよしとしよう・・・。ついでにdesctiptionから指定した文字数を表示して「...」をつけるようにしたので一覧のていをなすことができた。

<?php
  $rsslink = 'http://samplesite.jp/feed/rss.xml';
  $getrss = file_get_contents($rsslink);
//media:thumbnailをthumbnailに置換する。
  $setrss = str_replace("media:thumbnail","thumbnail",$getrss);
  $rss = simplexml_load_string($setrss);

  // Atom であることを表すフラグ
  $isAtom = false;
 
  // RSS 1.0 であることを表すフラグ
  $isRSS1 = false;
 
  // RSS 2.0 と仮定して、ひとつのトピックについての情報を取得
  $single = $rss->channel->item;
 
  if (empty($single)) {
    // 失敗したら Atom とみなして、ひとつのトピックについての情報を取得
    $isAtom = true;
    $single = $rss->entry;
  }
 
  if (empty($single)) {
    // 失敗したら RSS 1.0 とみなして、ひとつのトピックについての情報を取得
    $isRSS1 = true;
    $single = $rss;
  }
 
  foreach ($single as $info) {
 
    // 各投稿の情報を取り出す
    $title = $info->title;
 
    if ($isRSS1) {
      // RSS 1.0
      $link = $info->link;
      $dc_date = $info->children('http://purl.org/dc/elements/1.1/');
      $date = date('Y/m/d', strtotime($dc_date->date));
      $description = $info->description; 
      $description = mb_strimwidth ($description, 0, 70, "..."); //70文字表示して「...」を表示する 
      $thumbnail = $info->thumbnail;
    } else if ($isAtom) {
      // Atom
      $link = $info->link['href'];
      $date = date("Y/m/d", strtotime($info->updated));
      $description = $info->content;
      $description = mb_strimwidth ($description, 0, 70, "..."); //70文字表示して「...」を表示する 
      $thumbnail = $info->thumbnail;

    } else {
      // RSS 2.0
      $link = $info->link;
      $date = date("Y/m/d", strtotime($info->pubDate));
      $description = $info->description;
      $description = mb_strimwidth ($description, 0, 70, "..."); //70文字表示して「...」を表示する 
      $thumbnail = $info->thumbnail;
    }
?>
 
<time class="date"?><?php echo $date; ??></time?> : <img src="<?php echo $thumbnail; ?>"?><a href="<?php echo $link; ??>" target="_blank"?><?php echo $title; ?><?php echo $description ; ?gt;</agt;

<?php
  }
?>
[PHP] RSSやAtomのフィードを取得してページに表示する方法
0%