- ベストアンサー
RSSデータの読み込み方とは?
- RSSデータの読み込み方とは、YahooブログのRSSを取得するための方法やgooやbiglobeブログのRSSを取得する方法を解説します。
- 記事では、simplexmlという方法を使用して、サクッとすべてのデータを取得する方法や、ajaxを使用せずにPHPで処理する方法について解説します。
- また、取得方法の違いによる取りこぼしの問題や20件のデータが取得できない状況についても言及します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「Magpie RSS - PHP RSS Parser」を利用してみてはいかがでしょうか。 参考URLに日本語解説があります。
その他の回答 (1)
- mpx
- ベストアンサー率71% (149/209)
>> simplexmlのような方式で、サクッと全部取得できて、 >> 簡単な方法はないでしょうか? オブジェクトの構造違いを吸収するようにソフトを組めば simplexmlでも問題ないと思います。 dohdekkaが例示したコードを修正すると下記 <?php $xml=simplexml_load_file($yahoo_adrs); for($i=0;$i<=20;$i++){ if (isset($xml->channel->item[$i]->title)){ $title=$xml->channel->item[$i]->title; } else { $title=$xml->item[$i]->title; } $title=mb_convert_encoding($title,'SJIS','UTF-8'); } ?>
お礼
アドバイスありがとうございます...m(_ _)m 誤解を招く質問をしてしまったようです。 simplexmlで読み込めるYahooRSSは、 私も大体このような方法で取得しています。 質問をするときに一部コードを省略してしまいました。 スミマセン.... simplexmlで、Yahoo以外のブログのRSSを読み込むみ、 $xml(simplexmlの構造体)のvar_dumpをとってみると、 Array(False)が返ってきた様な覚えがあります。 原因が分らないですが、YahooブログのRSS と他のブログのRSSは、見た目以上に構造が違うようです... $fp=fopen($goo_adrs,'r'); $result=stream_get_contents($fp); fclose($fp); $parser=xml_parser_create('UTF-8'); xml_parse_into_struct($parser,$result,$value,$index); foreach($value as $a){ foreach($a as $b =>$keyb){ if($b=="tag"){ $sw=0; } if($b=="tag" AND $keyb=="TITLE"){ $sw=1; } if($sw==1 AND $b=="value"){ $title=$keyb; } } } この方法は、Yahoo以外のブログのほとんどは読み込み可能ですが、 もうちょっとスマートに行かないかなぁ..と、思いまして、 お尋ねいたしました。 只今、Magpie RSS - PHP RSS Parserを分析中です。 snoopyの置き場を何処に置けばリターンが正常に返ってくるのか、 検討中です。 フラグを立ててカウントしながらという、力技を使わないで、 せめてforeach文のネスト構造で取得できたりしたらと、問い合わせをさせて頂きました。 Magpie RSS 自体複雑なので、簡単な方法はないのではないか... ならば、今の方法でも良いのではないかと思っています。 ご意見、真にありがとうございました。 m(_ _)m
お礼
この度はありがとうございます。m(_ _)m 参考urlを拝見しました。 スクリプトが豊富で勉強になります。 早速、利用してみましたが、何のリターンもありません。 中身では、SNOOPYを利用しているので、 検索してダウンロードしました。 開発者からは、php.iniのディレクトリー云々とありありますが、 検索すると、include_onceするだけで簡単とも書いてあります。 参考文献の事例が少ないので、このスクリプトを参考に、 改良して行こうと思います。 検索できるほど豊富な知識がなかったで大変参考になりました。 ありがとうございました。 m(_ _)m