外部のRSSから画像を取得して表示する

2011年10月24日(月)

Category: IT関係, こだわり, 磨く

今日はマニアックネタ。自分の記録用に書かせて頂きます。

お店のHPには、このブログのメガネに関係することだけを取り出して、新着順に表示していました。これは、ひとつのブログのRSSから記事を抽出してタイトルと日付とリンクを表示していたものです。
これは、プログラム言語PHPを使ってRSSを取得して解析できる「MagpieRSS」を使っています。テキストだけの表示は簡単にできていたのですが、その記事に含まれる画像もサムネイルとして抽出したいと、ずっと考えていて、いろいろ試行錯誤していました。何回も断念していましたが、久しぶりにもう一度やってみたら、ついに出来ました!!こんな感じ。

外部のRSSから画像を取得して表示する

「preg_match」という関数を使います。RSSから取得した文字列を検索する関数です。まず、RSSの中の画像のコードを取り出したいので、img部分を取り出すには、このようにします。

1
2
3
4
5
<?php
    $encoded = $item[content][encoded];
    preg_match("/<img[\w\d\W\s]+?\s\/>/i",$encoded, $matches);
    print ($matches[0]);
?>

このままでは、画像そのままのサイズのものが貼り付けられてしまうので、画像リンクの部分だけを抽出して自分でサイズを指定してあげるために、少しアレンジします。

1
2
3
4
5
<?php
    $encoded = $item[content][encoded];
    preg_match("/src=\"(.*?)\"/i",$encoded, $matches);
?>
<img <?php echo $matches[0]; ?> height="60px" />

たったこれをしたいがために、随分時間を要してしまいました。
最近Facebookでも、リンクを貼ると自動で画像を取得して表示されるのが普通になっていますし、どうしてもこれをやりたかったのです。これが出来ると幅がかなり広がるんです。今は、記事の一つ目の写真だけを取り出す設定ですが、アレンジすればなんとでもなりそうです。

今日は久しぶりにモヤっとしていた部分が晴れた日になりました。

興味ある方は、前に書いた外部からRSSを複数取得して表示するも合わせてご覧ください。

コメントを残す

メールアドレスが公開されることはありません。