• 締切済み

RSSを取得したいのですが

下記サイトを参考に、以下のコードを埋め込んだのですが、 http://plaza.rakuten.co.jp/kemusiro/diary/200601150000/ 日付が (1970/01/01 00:00:00) と表示された上に文字化けしてしまいます。 MagpieRSSはmagpierss-0.72.tar.gzから必要ファイルを、index.phpの下におきました。 正常に表示させるためには、どう直せばよいでしょうか? <?php require_once('magpierss/rss_fetch.inc'); define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); $count = 5; $length = 60; $url = 'http://api.plaza.rakuten.ne.jp/kemusiro/rss/'; $rss = fetch_rss($url); echo "<ul>"; array_splice($rss->items, $count); foreach ($rss->items as $item) { $href = $item['link']; $title = mb_convert_encoding($item['title'], "SJIS", "auto"); $date = date('Y/m/d H:i:s', parse_w3cdtf($item['dc']['date'])); $description = mb_convert_encoding($item['description'], "SJIS", "auto"); if (mb_strlen($description) > $length) { $description = mb_strcut($description, 0, $length) . "..."; } echo "<li>"; echo "<FONT color=\"#ff8040\">(" . $date . ")</FONT> "; echo "<a href=$href>" . $title . "</a><BR>"; echo $description . "</li>"; } echo "</ul>"; ?>

みんなの回答

  • noris02
  • ベストアンサー率74% (56/75)
回答No.2

文字化けは、まさに文字コードの設定間違いなので、 一部ということは、phpで他から持ってきたデータが 違う文字コードになっている、 もしくは、utf-8で出力させたものを htmlでsjisなどで表示しようとしているなど、 一番はまりやすいけど、解決は簡単な部類です。最終的に表示された文字コードの確認は、ブラウザの文字エンコーディングで行い確認します。 日付が1970年1月1日になるということは、 $date = date('Y/m/d H:i:s',parse_w3cdtf($item['dc']['date'])); この部分だと思うのですが、 parse_w3cdtf($item['dc']['date'])); の $item['dc']['date'] の取得ができてないということになります。 RSS取得ならば、たぶんxml形式のものを読みに行って、配列に入れてるのが magpierss/rss_fetch.inc。 phpで 取得したデータを ある分だけ foreach で繰り返して出力している。 日付が1970/1/1 になる ⇒ $item['dc']['date'] の中身が 0 だから1970/1/1になる。 $item['dc']['date']が 存在しないのでは? ここまで書いて、magpieRSSについて みたら バグあるらしいアルヨ。 http://hogebar.seesaa.net/article/50912057.html

  • noris02
  • ベストアンサー率74% (56/75)
回答No.1

$title = mb_convert_encoding($item['title'],"SJIS","auto"); ←この部分大丈夫? UTF-8で取得したものを Sjisにコンバートしてます。

origin_five
質問者

お礼

ご回答をありがとうございます。 UTF-8に直しました。まだ一部、文字化けするのと日付が1970/01/01 00:00:00で表示されてしまいます・・・

関連するQ&A