$value) {//xmlを配列にする if($value['version'] == '2.0') {//もしRSSバージョンが2.0なら foreach($value->channel->item as $item) {//xmlを配列にする $date = date_create($item->Date);//xmlの日時情報を$dateに入れる $item->Date = date_format($date, 'Y-m-d\TH:i:sP');//$dateの日時情報書式をxmlの$itemに入れる } } } $i = count($rsslist);//$iに格納、$rsslistの数 $allrss = array(); for($n=0;$n<$i;$n++) { $rssarr[$n] = xml2arr($rssData[$n]); //pr($rssarr[$n]); $channelTitle = $rssarr[$n]['channel']['title']; if(isset($rssarr[$n]['channel']['item'])) { $rssarr[$n]['channel']['item'] = addChannelTitle($rssarr[$n]['channel']['item'], $channelTitle); $allrss = array_merge($allrss, $rssarr[$n]['channel']['item']); } else { $rssarr[$n]['item'] = addChannelTitle($rssarr[$n]['item'], $channelTitle); $allrss = array_merge($allrss, $rssarr[$n]['item']); } } usort($allrss, 'cmp'); //pr($allrss); $i = count($allrss); for($n=0;$n<$i;$n++) { if(empty($allrss[$n]['title'])) { $allrss[$n] = null; } } $_SESSION['rssses'] = $allrss = array_filter($allrss); } else { $allrss = $_SESSION['rssses']; } function addChannelTitle($items, $channelTitle) { $result = array(); foreach($items as $item) { $result[] = array_merge($item, array('channel_title'=>$channelTitle)); } return $result; } //dumpして確認する関数 function pr($var) { echo '
'; print_r($var); echo '
'; } # オブジェクト→配列変換用関数(http://soft.fpso.jp/develop/php/entry_2764.html) function xml2arr($xmlobj) { $arr = array(); if (is_object($xmlobj)) { $xmlobj = get_object_vars($xmlobj); } else { $xmlobj = $xmlobj; } foreach ($xmlobj as $key => $val) { if (is_object($xmlobj[$key])) { $arr[$key] = xml2arr($val); } else if (is_array($val)) { foreach($val as $k => $v) { if (is_object($v) || is_array($v)) { $arr[$key][$k] = xml2arr($v); } else { $arr[$key][$k] = $v; } } } else { $arr[$key] = $val; } } return $arr; } function cmp($a, $b) { return strcmp($b['Date'], $a['Date']); } $maxnum = count($allrss); // 最大件数を取得 $pages = ceil($maxnum / $nums); // 最大ページ数を計算 $page = (empty($_GET['page'])) ? 1 : $_GET['page']; // 現在のページを取得 $start = ($page - 1) * $nums; // スタートページを設定 $script = basename($_SERVER['SCRIPT_NAME']); $link = ''; // 前ページ・次ページのリンク設定※表示形式は自由に指定してください。 if ($page > 1) $link = 'PREV |'; // 各ページへのリンクを表示する場合 for($n = 1; $n <= $pages; $n++) { if($n == $page){ $link .= '
  • '.$n.'
  • ';//現在のページのナンバーへはリンクしない } else { $link .= '
  • '.$n.'
  • ';//現在のページ以外のナンバーへはリンクする } } if ($page < $pages) $link .= ' NEXT'; echo "

    新着記事

    "; echo '
      ' . $link . "
    \n";//各ページへのナンバーリンクを表示 echo ''; echo''; $count = 1; foreach ($allrss as $rss => $item) { if ($count > $start && $count <= $start + $nums) { $date = preg_replace('/([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9:]{3}[0-9]{2})[0-9+:]+$/', '$1/$2/$3 $4', $item['Date']); echo ''; } $count++; } echo "
    ' . $date . '' . $item['title'] . '' . $item['channel_title'] . '
    "; echo '
      ' . $link . "
    \n";//各ページへのナンバーリンクを表示 //pr($allrss); ?>