アメブロのRSS情報をサイトに表示する(PHP)

RSS情報をサイトに表示するという依頼があったので実装を検討したのでメモしておきます。

<html><head><title>RSS</title></head>
<body>
<?php
$blogID = 'a-imoto'; // 例としてイモトアヤコさんのアメブロを表示します
$checkURL="http://ameblo.jp/";
$lenURL = strlen($checkURL) + strlen($blogID) + 1;
$blogRSS = simplexml_load_file("http://feedblog.ameba.jp/rss/ameblo/{$blogID}");
$bloglist = "";
foreach ( $blogRSS->item as $item ) {
  if( substr( $item->link, 0, $lenURL ) == "{$checkURL}{$blogID}/" ){
    // 本人の投稿を判定する(広告を除去する)
    $title = $item->title;
    $link = $item->link;
    $desc = strip_tags( $item->description );
    $desc = mb_strimwidth( $desc, 0, 104, "...", "utf-8" );
    $dt = date( 'Y/m/d', strtotime( $item->children('http://purl.org/dc/elements/1.1/' )->date ) );
    $today = date( 'Y/m/d' );
    $yesterday = date( 'Y/m/d', strtotime("-1 day") );
    $bloglist .= "<li>$dt ";
    if ( $dt == $today || $dt == $yesterday ) {
      // 当日と1日前の投稿には「NEW」を表示する
      $bloglist .= "<span style=\"color:red\">NEW</span>";
    }
    $bloglist .= "<br /><a href=\"{$link}\">{$title}</a><p>{$desc}</p></li>\n";
  }
}
$bloglist .= "<p><a href=\"http://ameblo.jp/{$blogID}/entrylist.html\">もっと見る</a></p>";

echo $bloglist;
?>
</body></html>

ちなみに、livedoorはこんな感じ・・・

<html><head><title>RSS</title></head>
<body>
<?php
 $userID = "pochitohanako";
 $rssurl = "http://blog.livedoor.jp/{$userID}/atom.xml";
 $xml = simplexml_load_file($rssurl);
 foreach ($xml->entry as $item){
 $content = strip_tags($item->content);
 $content = mb_strimwidth($content, 0, 104, "...", "utf-8");
 echo "<li><a href=\"{$item->link[href]}\">{$item->title}</a><p>{$content}</p></li>\n";
 }
?>
</body>
</html>


Comments are closed