現在、色々サイトで調べて、複数のRSSの情報を表示するPHPを作成いたしました。
とりあえず動いているのですが、サムネイル画像も表示させたいと思い、
改良を加えておりますが、出来ずこちらにたどり着きました。
わかられる方がいらっしゃいましたらご教示下さい。
該当のソースコード
lang
1<dl class="notice"> 2<?php 3if (!ini_get('date.timezone')) { 4 date_default_timezone_set('America/New_York'); 5} 6require_once './Feed.php'; 7Feed::$cacheDir = './cache'; 8Feed::$cacheExpire = '1 hours'; 9$maxnum = 10; 10$rssurl = array(); 11 12$rssurl[] = "https://rssのURL1"; 13$rssurl[] = "https://rssのURL2"; 14$rssurl[] = "https://rssのURL3"; 15$myblog = 0; 16$bikenews = 0; 17$blogarray = array(); 18$rssarray = array(); 19if ($maxnum != "") { 20 $rss_num = count($rssurl); 21} else { 22 $rss_num = count($rssurl) - $bikenews; 23} 24for ($i=0;$i<$rss_num;$i++) { 25 $feed = new Feed; 26 $rss = $feed->load($rssurl[$i]); 27 $blogtitle = htmlSpecialChars($rss->title); 28 $blogtitle = mb_convert_encoding($blogtitle, "UTF-8", "auto"); 29 $blogurl = htmlSpecialChars($rss->link); 30 $bloglink = "<a href=\"{$blogurl}\" target=\"blog\">{$blogtitle}</a>"; 31 $blogarray[] = $bloglink; 32 foreach ($rss->item as $item) { 33 $title = htmlSpecialChars($item->title); 34 $title = mb_convert_encoding($title, "UTF-8", "auto"); 35 $url = htmlSpecialChars($item->link); 36 $date_timestamp = (int) $item->timestamp; 37 $date = Date("Y/m/d",$date_timestamp); 38 if ($i < $myblog) { 39 $linkstr = "<dt>{$date}</dt>\n<dd><a href=\"$url\" target=\"_blank\">{$title}</a>{#image}</dd>\n"; 40 } else { 41 $linkstr = "<dt>{$date}</dt>\n<dd><a href=\"$url\" target=\"_blank\">{$title}</a>{#image}</dd>\n"; 42 } 43 $monthly_timestamp = mktime(date(G), date(i), date(s), date("m")-3, date("d"), date("Y")); 44 if ($date_timestamp > $monthly_timestamp) { 45 $rssarray["{$date_timestamp}"] = $linkstr; 46 } 47 } 48} 49krsort($rssarray); 50if ($maxnum != "") { 51 $newnum = $maxnum; 52} else { 53 $newnum = count($rssarray); 54} 55$count = 0; 56for(reset($rssarray); $key=key($rssarray); next($rssarray)){ 57 print "$rssarray[$key]"; 58 $count++; 59 if ($count == $newnum) { 60 break; 61 } 62} 63$blognum = count($rssurl) - $bikenews; 64if ($maxnum != "") { 65} else { 66} 67?> 68</dl>
試したこと
https://news.google.com/rss/topics/CAAqIQgKIhtDQkFTRGdvSUwyMHZNRE5mTTJRU0FtcGhLQUFQAQ?hl=ja&gl=JP&ceid=JP:ja
rssの<media:content url=というところに画像があるので、
これを表示させようとして、以下の記述を入れましたが、表示されませんでした。
lang
1$thumbnail = trim($now_url,”/”) . ”/img/noimage.jpg”;//画像がない場合の指定 2if( preg_match_all(’/<img([\s\S]+?)>/is’, $item->description, $matches) ){ 3foreach( $matches[0] as $img ){ 4if ($img === reset($matches[0])) {//最初の画像にマッチしたもの 5if( preg_match(’/src=[\’”](.+?jpe?g)[\’”]/’, $img, $m) ){ 6$thumbnail = $m[1];