こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

blogのRSSデータよりtitleとdateの取得を・・・

RSSデータよりtitleとdateの取得を取得し、別ページに表示したいと考えています。
以前内容自体を表示させるものは、お手伝いいただきできるようになったのですが、titleなどを取得する事ができませんでした・・・

(以下がRSSより本文を取得して、表示するPHPコードの質問となります。)
http://okwave.jp/kotaeru.php3?q=2053985

上記コードでtitle,dateを取得して、表示したいと考えています。
素人考えだと、$contents=$root->getElementsByTagName("encoded");
の部分で本文を取得しているので、これを$contents=$root->getElementsByTagName("title");などとして、取得できないかと試したのですが、うまくいきませんでした・・・

titleとdateの取得をして表示するコード・・・アドバイスでもいいですのでご教授の方お願い致します。

投稿日時 - 2006-05-12 02:47:09

QNo.2145955

困ってます

質問者が選んだベストアンサー

>$link=$item->getElementsByTagName("link");
>で取得して、それで<A>タグでtitleを囲む感じにすればよいのでしょうか?
#1の投稿でも書いていますが、
getElementsByTagName( ) を使って取り出したものはたとえ合致するものが1つしかなくてもノードではなくてノードリストなので、
$link->item(0)->nodeValue のようにアクセスする必要があると思いますが、それだけ気をつければ大丈夫だと思います。
*
DOMによる方法が面倒くさければSimpleXML を使うとすっきりするかもしれません。

投稿日時 - 2006-05-16 04:19:20

お礼

ありがとうございました。
XMLの考え方が分かっていなかったみたいですね・・・

SimpleXMLの方も試してみたいと思います。

投稿日時 - 2006-05-25 15:39:10

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

修正してみました
----------------------------------------------------------------
<?php
$dom = new domDocument;
$dom->load("index.xml");
$root=$dom->documentElement;
$items=$root->getElementsByTagName("item");
foreach($items as $item){
$title=$item->getElementsByTagName("title");
print mb_convert_encoding($title->item(0)->nodeValue,"SJIS","UTF-8") . "\n";
$date=$item->getElementsByTagName("date");
print $date->item(0)->nodeValue . "\n";
$contents=$item->getElementsByTagName("encoded");
$html= $contents->item(0)->nodeValue . "\n";
print mb_convert_encoding($html,"SJIS","UTF-8") . "\n";
}
?>

投稿日時 - 2006-05-12 04:07:45

お礼

有難う御座います!
動作確認がまだ出来ていませんが、勘違いをしていたせいで動かなかったようですね・・・

ちなみにlinkを取得しタイトルより飛ばしたい場合は、
$link=$item->getElementsByTagName("link");
で取得して、それで<A>タグでtitleを囲む感じにすればよいのでしょうか?

投稿日時 - 2006-05-16 02:50:23

あなたにオススメの質問