いちばん失敗した人決定戦

よろしくお願いします...m(_ _)m

YahooブログのRSSは、

<?php
$xml=simplexml_load_file($yahoo_adrs);
for($i=0;$i<=20;$i++){
$title=$xml->channel->item[$i]->title;
$title=mb_convert_encoding($title,'SJIS','UTF-8');
}
?>

で、タイトル取得が出来ますが、
goo、biglobeブログの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;
}
}
}

この方法は、取りこぼしがある為、
20件のデータが10件だったり15件だったりして不便です。

simplexmlのような方式で、サクッと全部取得できて、
簡単な方法はないでしょうか?
ajaxは勉強を始めたばかりで、使えません。
PHPで何とか処理したいと考えてます。

ご指導、よろしくお願いします。 m(_ _)m

現在、下記のブログで利用しています。
http://maybis.sitemix.jp/blog/

A 回答 (2件)

「Magpie RSS - PHP RSS Parser」を利用してみてはいかがでしょうか。


参考URLに日本語解説があります。

参考URL:http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS
    • good
    • 0
この回答へのお礼

この度はありがとうございます。m(_ _)m
参考urlを拝見しました。
スクリプトが豊富で勉強になります。
早速、利用してみましたが、何のリターンもありません。
 中身では、SNOOPYを利用しているので、
 検索してダウンロードしました。
 開発者からは、php.iniのディレクトリー云々とありありますが、
 検索すると、include_onceするだけで簡単とも書いてあります。
参考文献の事例が少ないので、このスクリプトを参考に、
改良して行こうと思います。

検索できるほど豊富な知識がなかったで大変参考になりました。
ありがとうございました。  m(_ _)m

お礼日時:2009/02/26 09:32

>> 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');
}
?>
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます...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

お礼日時:2009/03/02 00:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!