PHPで他のサイトのXMLの内容を表示する方法を優しく教えてください。

(サンプルソースなどあるとありがたいです)

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/12/28 00:00:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:fonya3 No.1

回答回数238ベストアンサー獲得回数10

ポイント35pt

こんなん(↓)でいかがでしょう.

http://www.2ones.com/bidders+/index.php?tag=%E5%85%A8%E3%81%A6%E...

この(↑)URLのhatenaの情報を取得・表示している部分のソースです。


<?php
/***************************************
       hatena rss reader
       はてなのRSS配信を受信して表示する

****************************************/



$keyword                       = "Webサービス";

$xml_url_hatena                  = "http://q.hatena.ne.jp/list?mode=rss&amp;word=".urlencode($keyword);


$item_count                     = 0;

function startElement_hatena($parser, $name, $attrs) {
       global  $start_item_hatena
               ,$item_count_hatena
               ;

       if($name == 'ITEM'){
               $item_count_hatena++;
               $start_item_hatena              = 1;
       }
}

function readData_hatena($parser, $value) {
       global $value_temp_hatena;
       $value_temp_hatena      = $value;
}

function endElement_hatena($parser, $name) {
       global  $start_item_hatena
               ,$item_count_hatena
               ,$item_array_hatena
               ;

       global $value_temp_hatena;
       if($start_item_hatena == 1){
               switch($name){
                       case 'TITLE':
                               $item_array_hatena[$item_count_hatena][title]                   = $value_temp_hatena;
                               break;
                       case 'LINK':
                               $item_array_hatena[$item_count_hatena][link]                    = $value_temp_hatena;
                               break;
                       case 'DESCRIPTION':
                               $item_array_hatena[$item_count_hatena][description]             = $value_temp_hatena;
                               break;

                       default:
                               break;
               }
               if($name == 'ITEM'){
                       $start_item_hatena              = 0;
               }
       }
}


$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,true);
xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1);
xml_set_element_handler($xml_parser, "startElement_hatena", "endElement_hatena");
xml_set_character_data_handler($xml_parser, "readData_hatena");


if (!($data = file_get_contents($xml_url_hatena))) {
       die("XML 入力をオープンできませんでした");
}

if (!xml_parse($xml_parser, $data)) {
       die(sprintf("XML エラー: %s が %d 行目で発生しました", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
}

// XMLパーサーを解放
xml_parser_free($xml_parser);

//echo "結果:配列のサイズ".count($item_array_hatena)."\n";

if(count($item_array_hatena) > 0){

       echo "<ul style=\"font-size:8pt;vertical-align:top;padding-top:1px;padding-right:0px;padding-bottom:1px;padding-left:0px;margin-left:0em;margin-top:1em;margin-bottom:1em;\">\n";
       $i=1;
       for ($i=1; $i<count($item_array_hatena)+1; $i++){
               echo "<li style=\"font-size:8pt;vertical-align:top;padding-top:1px;padding-right:0px;padding-bottom:1px;padding-left:0px;margin-left:2em;margin-top:1em;margin-bottom:1em;\"><a href=\"".$item_array_hatena[$i][link]."\" target=\"_blank\"><div style=\"font-size:9pt\">".$item_array_hatena[$i][title]."</a><br><div>\n";
               echo "<div style=\"font-size:8pt\">".$item_array_hatena[$i][description]."<div>\n";
               echo "</li>\n";
       }
       echo "</ul>\n";
}else{
       echo "<ul style=\"font-size:8pt;vertical-align:top;padding-top:1px;padding-right:0px;padding-bottom:1px;padding-left:0px;margin-left:0em;margin-top:1em;margin-bottom:1em;\">\n";
       echo "<li style=\"font-size:8pt;vertical-align:top;padding-top:1px;padding-right:0px;padding-bottom:1px;padding-left:0px;margin-left:2em;margin-top:1em;margin-bottom:1em;\">Hatenaには情報はありませんでした。</li>";
       echo "</ul>\n";
}


?>
id:wate_wate No.2

回答回数45ベストアンサー獲得回数3

ポイント35pt

「他のサイトのXML」 => RSS

ということであれば、

「Do you php?」の「PEARのXML_RSSでRSSしてみる」

URL:

http://www.doyouphp.jp/sample/sample_xml_pear_rss.shtml

のサンプルソースを見てみるのがいいのではないでしょうか?

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません