2013年09月10日 追記・変更

MagpieRSSを利用すると、RSSの作成が簡単に行える
MagpieRSSを利用しているので、このプログラムを参考にする際はMagpieRSSを用意する必要がある。また、画像は一度サーバーに取得保存後にサイズ圧縮をしている。
このRSSプログラムは、jsファイルとして保存している。使用の際はjsファイルを読み込みという形で使っていた。
<?php //基本設定 $num = 40; $rssUrl=array( 'サイトURL1',//サイト名 'サイトURL2',//サイト名 'サイトURL3'//サイト名 ); //RSSの読み込みプログラム require_once('../magpierss/rss_fetch.inc'); //MagpieRSSロード define('MAGPIE_OUTPUT_ENCODING','UTF-8'); if($datacount !== 0){ foreach ($rssUrl as $no => $rss_url) { if ($rss_url != '') { //URLからRSSを取得 $rss = @fetch_rss($rss_url); if ($rss != NULL) { for ($i=0; $i<count($rss->items); $i++) { //サイトのタイトルをitemsに格納 $rss->items[$i]["site_title"] = $rss->channel["title"]; $rss->items[$i]["site_link"] = $rss->channel["link"]; } //itemsだけ別配列に格納 $rssItemsArray[] = $rss->items; } } }//--▲foreach-- $concatArray = array(); if (is_array($rssItemsArray)) { for($i=0;$i<count($rssItemsArray);$i++){ //配列を統合する $concatArray = array_merge($concatArray,$rssItemsArray[$i]); } foreach ($concatArray as $no => $values) { //RSSの種類によって日付を取得 if($values['published']){$date = $values['published'];} elseif($values['created']){$date = $values['created'];} elseif($values['pubdate']){$date = $values['pubdate'];} elseif($values['dc']['date']){$date = $values['dc']['date']; } $date=date("Y-m-d H:i:s",strtotime($date)); //Filter $nowtime = date("Y-m-d H:i:s",strtotime( "now" ));//現在時刻の取得 if($date > $nowtime){ }elseif(preg_match("/AD/", $values["title"])){ }elseif(preg_match("/PR/", $values["title"])){ }else{ //値の定義 $title=$values["title"]; $link=$values["link"]; $site_title=$values["site_title"]; $site_link=$values["site_link"]; //画像取得 if($values['content']){ $pre_content=$values["content"]; $content=$pre_content["encoded"]; } elseif($values['description']){ $content = $values['description']; } //画像がある場合とない場合 if(preg_match('/<img .*?src ?= ?[\'"].*?[\'"]/i', $content)){ preg_match('/<img .*?src ?= ?[\'"].*?[\'"]/i', $content, $img_all); $img_src = preg_replace('/<img .*?src ?= ?[\'"]/', '', $img_all); $gazo = preg_replace('/[\'"]/', '', $img_src); }else{ $gazo = "画像が存在しない時に表示する画像URL"; } //記事ごとに必要な項目を抽出 $rssArray[]=array($date, $title, $link, $site_title, $site_link,$gazo); }//--▲if--Filter-- }//--▲foreach-- //多次元配列ソート用比較関数 //この場合は配列の1番目の項目を降順にソート function cmp($a, $b) { if ($a[0] == $b[0]) return 0; return ($a[0] > $b[0]) ? -1 : 1; } //配列をユーザー定義関数でソート if ($rssArray) { usort($rssArray, 'cmp'); } if (count($rssArray) > $num) { $count=$num; } else { $count=count($rssArray); } //必要な件数分だけHTML整形 for ($i=0; $i<$count; $i++) { $date=date("m/d H:i",strtotime($rssArray[$i][0])); $title=$rssArray[$i][1]; $link=$rssArray[$i][2]; $site_title=$rssArray[$i][3]; $site_link=$rssArray[$i][4]; $gazo=$rssArray[$i][5]; if(!empty($gazo[0])){ $imgdata = file_get_contents($gazo[0]); file_put_contents("./download/rssp${i}.jpg",$imgdata); // 画像処理開始 $file1 = "./download/rssp${i}.jpg"; // 元画像ファイル $file2 = "./download/rssp_ok${i}.jpg"; // 画像保存先 $in = ImageCreateFromJPEG($file1); // 元画像ファイル読み込み $size = GetImageSize($file1); // 元画像サイズ取得 $width = 255; // 生成する画像サイズ(横) $rate = $size[0] / $width; //圧縮比 $height = $size[1] / $rate; //リサイズ後縦幅 $out = ImageCreateTrueColor($width, $height); // 画像生成 ImageCopyResampled($out, $in, 0, 0, 0, 0, $width, $height, $size[0], $size[1]); // サイズ変更・コピー ImageJPEG($out, $file2); // 画像保存 $gazolink = "<a target='_blank' href='$link'><img src='./download/rssp_ok${i}.jpg' alt='$title' width='255px' /></a><p><a target='_blank' href='$link'>$title</a></p>"; } else{ $gazolink = ""; } $site_titlelink = "<p class='sideboxlinktxt'>$date<br /><a target='_blank' href='$site_link'>[$site_title]</a></p>"; $mix="<div class='sidebox'>$gazolink$site_titlelink</div>"; $output = $output.$mix;//ループさせるための自己読み込み } }//--▲for-- }//--▲if-- // 念のため、改行とか消す $output = str_replace(array("\r\n","\r","\n"), '', $output); // シングルコーテーションによるエラー対策 \ をシングルコーテーションの前に $output = str_replace('"', '\"', $output); //仕上げ $step1 = 'document.write("'; $step2 = '");'; $more_str = $step1 . $output .$step2; $more_str = mb_convert_encoding($more_str, "SJIS", "UTF-8"); // 置き換え用のjsファイル生成 file_put_contents("pickup.js",$more_str); ?>