人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

simplexml_load_string()関数で、

??http://b.hatena.ne.jp/keyword/%E6%A5%AD%E7%95%8C?mode=rss&sort=count

こちらのrssを取得してパースし、オブジェクトに入れています。

ところが

Entity: line 499: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE3 0x2E 0x2E 0x2E in

というようなエラーが発生します。
web上ではエラーで表示されませんが、テキストで保存してみると、
最後のエヴァンゲリオンのrss部分の

動き.

という場所があります。
それをpreg_replaceで""(なにもなし)へ置換しました。
すると、問題なく表示できました。

http://q.hatena.ne.jp/1180553984
こちらの件もあり、RSSのパース処理で
毎回エラー文字が出るたびにその部分を修正するのは、現実的ではない気がします。
(無限にこういう文字がありそうだし、
毎回修正していてはエラーばかり表示されるので・・・)


RSSを取得してパースし、後はレイアウトとか調整して出力しているだけです。

こういう場合、どのようにすればいいのでしょうか?
XMLを甘く見ていました・・・。


●質問者: onigirin
●カテゴリ:ウェブ制作
✍キーワード:RSS UTF-8 Web XML エラー
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tezcello
●100ポイント ベストアンサー

こんな記事がありましたが、参考になるでしょうか?

まだ未テストなので今回の場合も上手くいくのか分りませんが...

http://fladdict.net/blog/2006/06/rssutf8.html

◎質問者からの返答

どうもありがとうございます。

試してみたところ、今回のエラーは解消されました!

コンバートすごいですね・・・。

ただ、

http://q.hatena.ne.jp/1180553984

こちらのエラーには反映されませんでした。

非UTF-8文字列の対処法が出来ましたが、

不正な文字はまた別のようですねぇ。

この関数はちょっとすごいと感動しました(笑)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ