タイトルそのままですが、なんとか上手く切り替えることが出来たのでメモとして残そうと思う。 ちなみにブログとは今書いているブログではなく別のブログです。
とある自分のアメブロの記事のタイトル、日付、本文の一部をこれまたとある自分のブログのトップページにYQLを使ってRSSフィードを取得してフィードの内容を表示しているのだが、正月も過ぎた頃に、なにげにとある自分のブログを見ていたら、アメブロのフィードが表示されていない事に気づいた。
おかしいなと思い何か仕様でも変わったのかと、RSSフィードを確認したりするも特に問題はなさそう。
YQL側の問題なのかなと、YQLのページに行くと、なんと1/3でサービスが終了したとのこと。
これは困った、YQLに似た代替案はないかと検索してはみるが、使えそうな無料サービスは見つからず、こうなったら自分でコードを書くしかないのかなぁと検索を続けていたら以下のページを見つけた。
PHPで書かれたライブラリだが自分が必要とするのはフィードを取得してアメブロのサマリを表示するだけなのでこれで簡単に行けそう。
元々使っていたYQLはjsで処理していたのでPHPとなるとガラリと処理が変わるが、こういうライブラリがあると全部コードを書かなくていいので助かる。
このライブラリを使って書いたコードがこちら。
require_once "./Feed.php"; // 取得したいRSSフィードのURL $url = "http://rssblog.ameba.jp/xxxxxx/rss20.xml"; // 表示したい本文の文字数 $length = 80; $feed = new Feed; $rss = $feed->loadRss( $url ); foreach($rss->item as $item) { $desc = $item->description; // 不要なタグを削除する $samary = preg_replace('/<img .*?>|<span .*?>|<\/span>|<p>|<\/p>|<br>|<br \/>|\\r?\\n|<a href="https:\/\/stat.*?>/i',"",$desc); echo '<li><a href="' . $link . '" target="_blank">' . $title . '</a> (' . date( "Y/m/d" , $timestamp ) . ') ' . '</li><p>' . mb_substr($samary,0,$length) . ' ' . '...<a href="' . $link . '" targer="_blank">続く</a>'; }
変数 $title にタイトル、$desc に本文、$linkにその記事へのリンクが入るのでお好きなような編集してecho でhtmlを出力するとおしまい。
コメント
ありがとうございます。