忍者ブログ
テンプレート編集中につき、デザイン不備には目をつぶってやってください…
[6]  [5]  [4]  [3]  [2]  [1] 
[] [PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

■ANELLINO
http://www.anellino.com/index.php

デザイン画を貰ったら、こんなデザインになってました…
聞いてないよー!!??
RSSのサイト表示なんか今までやったことないじゃん!?
出来るかどうかすら怪しいんですけど!?


そんな訳で、早速外部RSSを表示する方法を調べてみました。

▼参考:
外部RSSを読み込み - phpspot


とりあえずコレを入れただけでは動かないので、ちょこちょこと修正していきます。


■まず、文字コード。

// UTF-8なドキュメントの場合ここで
// $value = mb_convert_encoding($value, "EUC-JP", "UTF-8"); などする必要あり


ここを↓変更。

mb_convert_encoding($value, "shift_jis", "UTF-8");


■日付表示
サンプルでは日付引っ張ってないので、rdfファイルの中から日付を引っ張り出してきます。

RDFの日付部分
2008-08-29T15:37:44+09:00



欲しいのは「2008-08-29」までなので↓追記。

$date = substr($date,0,10);($dataの一番最初から十文字目までもってこーい)


■一行だけ持ってくる
サンプルだと、データ最後まで引っ張って来ちゃうので(記事十個分とか)
一行だけ表示させます。


まず、サンプルで記事を表示してる部分を削除。
echo <<<EOM $title<br> $link<br> $description<hr>


次に、一行ごとテーブルに記憶
$rss[$n] = "<a href='".$link."' target='_blank'>".$date." ".$title." <img src='img/top/icon_more.gif' align='absmiddle' alt='more' width='60' height='17' alt='more' title='more' /></a>";


一番最後に一行だけ表示させる
echo $rss[0];



★完成コード★

<?php


// 外部RSSを簡単に読み込んで出力するルーチン

$RSSURL = "http://anellino.cocolog-nifty.com/blog/index.rdf";


$buff = "";

$fp = fopen($RSSURL,"r");

while ( !feof($fp) ) {

$buff .= fgets($fp,4096);

}

fclose($fp);


// パーサ作成

$parser = xml_parser_create();

// パーサオプションを指定

xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);

// パース実行、連想配列にパース結果代入

xml_parse_into_struct($parser,$buff,$values,$idx);

// パーサ開放

xml_parser_free($parser);


// パースして得た連想配列をまわす

$in_item = 0;

$n = 0;

foreach ($values as $value) {

$tag = $value["tag"];

$type = $value["type"];

$value = $value["value"];



$tag = strtolower($tag);

if ($tag == "item" && $type == "open") {

$in_item = 1;

} else if ($tag == "item" && $type == "close") {


$date = substr($date,0,10);



$rss[$n] = "<a href='".$link."' target='_blank'>".$date." ".$title." <img src='img/top/icon_more.gif' align='absmiddle' alt='more' width='60' height='17' alt='more' title='more' /></a>";



$in_item = 0;

$n += 1;

}

if ($in_item) {

switch ($tag) {

case "title":

$value = mb_convert_encoding($value, "shift_jis", "UTF-8");

$title = $value;

break;

case "link":

$link = $value;

break;

case "dc:date":

$date = $value;

break;

}

}

}


echo $rss[0];


?>





エンコードと記事数変えれば大体どこでも使えるんじゃないかな?


協力多謝:原田さん
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]