$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 '
\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 '' . $date . ' | ' . $item['title'] . ' | ' . $item['channel_title'] . ' |
';
}
$count++;
}
echo "
";
echo '
\n";//各ページへのナンバーリンクを表示
//pr($allrss);
?>