• 締切済み

SimpleXMLでデータが取得できない

PHPで、RSSのデータが上手く取得できず、困っております。 最初はSimplePieというフリーのライブラリを使用していたのですが、 一部のRSSのデータが全く取得できなかったので、使用を諦めました。 自分で処理を書こうと思い、以下の手順を踏んで RSSのデータを取得することを考えついたのですが、 それでもデータが取得できませんでした。 1.file_get_contents($url)で、RSSの生データを取得する 2.RSSの文字エンコーディングをUTF-8⇒SJIS⇒UTF-8に再変換 3.simplexml_load_stringでRSSをパース 最初は1と3の手順しか行っておらず、 SimplePieでデータが取得できたRSSはこれでも問題なかったのですが データが取得できなかったRSSで同じものを試すと 文字コードに関するエラーが出てきたので、2の処理を加えました。 文字コードのエラーは全て解消されたのですが、 それでもsimplexml_load_stringでデータがパースできず、 手詰まりになってしまっている状況です。 文字コードエラーが発生しているRSSでも、 xmlの文字列自体は正常に取得できているようなので simplexml_load_stringの段階で何かが失敗しているのだとは思うのですが、 全くエラーも表示されないため、何がダメなのかが分かりません。 どなたか、原因に心当たりがあったら 教えていただけないでしょうか? どうぞよろしくお願いいたします。

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

前の質問のプログラムに1箇所記述ミスがあります。 誤)$items = $rss_xml->item; 正)$items = $rss_xml->channel->item;

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

本来utf-8→sjis→utf-8などという処理は不要ですよね。 >文字コードに関するエラーが出てきたので、2の処理を加えました。 具体的にどのようなエラーだったのでしょうか?もしおかしなバイナリが混じっていて、その一部が文字コードに関するエラーになっていた(utf-8→sjis→utf-8で取り除かれた)のであれば、utf-8→sjis→utf-8で取り除けていない(かつ文字コードに関するエラーを吐かない)バイナリがまだ混入している可能性があります。 >xmlの文字列自体は正常に取得できているようなので 「見た目」は正常なんですよね。となるとファイルに落としてバイナリダンプしてみるとかでしょうかねぇ・・・

関連するQ&A