WordpressサイトにアメブロのRSSを使用し、新着のタイトル・日付・記事内容・最初の投稿写真を5件表示させたいと思い、PHPを作成しました。
記事内にある絵文字は除外し、投稿写真の最初の物を表示させます。
全て表示はされているのですが、写真が最初の物ではなく最後の物が表示されてしまいます。
調べてもどこに原因があるのかわからず、質問させていただきました。
アドバイスいただけると大変助かります。よろしくお願い致します。
↓こちらのFeed.phpを設置
https://github.com/dg/rss-php
↓Wordpressのindex.phpに書いたphpコード
php
1<?php 2require_once "Feed.php" ; 3$feed = new Feed ; 4$url = "RSSのURL入力"; 5$rss = $feed->loadRss( $url ) ; 6$num = 5;//表示させたい件数 7$i=0; 8$desW = 40; 9if ( $desW != 0){ 10 $desW = ($desW*2)+2; 11} 12foreach( $rss->item as $item ) 13{ 14 if($i>=$num){ 15 } 16 else{ 17$title = $item->title ; 18$link = $item->link ; 19$timestamp = strtotime( $item->pubDate ) ; 20$description = $item->description ; 21$description = str_replace("▼続きを読む","",$description); 22$description = strip_tags($description); 23if ( $desW != 0){ 24$description = mb_strimwidth($description, 0, $desW, "…",'utf-8'); 25} 26//画像がない場合の指定 27$first_img = trim($now_url,"/") . "../../../img/noimage.jpg"; 28//絵文字画像は除外 29$blacklist = array( 30"emoji.ameba.jp", 31"stat100.ameba.jp/blog/ucs/img" 32); 33if( preg_match_all('/<img(.+?)>/is', $item->description, $matches) ){ 34 foreach( $matches[0] as $img ){ 35 $is_white = true; 36 foreach ($blacklist as $path) { 37 if (strpos($img, $path) !== false) { 38 $is_white = false; 39 } 40 } 41//最初の画像にマッチしたもの 42 if ($is_white && preg_match('/src=[\'"](.+?(?:jpg|png))[\'"]/i', $img, $m)) { 43 $first_img = $m[1]; 44 } 45 } 46 } 47?> 48 <p><?php echo date( "Y/m/d", $timestamp); ?></p> 49 <img src="<?php print $first_img; ?>" alt="<?php print $item->title; ?>" width="100"> 50 <a href="<?php echo $link; ?>" target="_blank"><?php echo $title; ?></a> 51 <p class="text"><?php echo $description; ?></p> 52 <?php 53 $i++; 54 } 55 } 56 ?>

回答1件
あなたの回答
tips
プレビュー