IT-TOP.BIZはPHP/CGI/AJAXベースのWEBサイト・システム製作に助力致します。

トップ 新着 ソフトウェア サポート&サービス 更新履歴 2008/11/21
WWWフロンティア〜IT-TOP.BIZ

Yahoo API の使い方

 Yahoo Web APIは、パラメータを指定したURLを実行する事で使えます。
 PHPのサンプルは、レスポンスとしてXMLを受け取ります。

5.Yahoo API / PHPサンプル.3を動かす

サンプル3.ではdomを使います。
サンプル1、2と同様、「common.php」「YJSearchExample.php」が含まれます。

5.1.「common.php」の内容

やはり「common.php」はYahoo API PHPサンプル1と全く同じものです。

5.2.「YJSearchExample.php」の内容

<?php
// Yahoo! JAPAN Search Services PHP Example Code Ver.1(2005/11/30)
//
require './common.php';
$q=build_query();
// Then send it to the appropriate service
$dom = DOMDocument::load($service[$_REQUEST['type']].$q);
  /* DOMDocumentクラスのload()メソッドを呼び出します。*/
// Now traverse the DOM 
function xml_to_result($dom) {
  $root = $dom->firstChild;
  /*DOMルートノードを取得します*/
  foreach($root->attributes as $attr) $res[$attr->name] = $attr->value;
  /*ルートの属性(totalResultsAvailable / totalResultsReturned / firstResultPosition)を取得します*/
  $node = $root->firstChild;
  $i = 0;
  while($node) {
    switch($node->nodeName) {/*nodeNameプロパティで判別*/
      case 'Result':/*Resultノードの場合*/
        $subnode = $node->firstChild;
        while($subnode) {/*Resultノードの子ノードを探索*/
          $subnodes = $subnode->childNodes;
          foreach($subnodes as $n) {
            if($n->hasChildNodes()) {
            /*さらに子ノードを持っている(Cache)場合*/
                foreach($n->childNodes as $cn)
                  $res[$i][$subnode->nodeName][$n->nodeName]=trim($cn->nodeValue);
            } else $res[$i][$subnode->nodeName]=trim($n->nodeValue);
            /*子ノードを持っていない場合*/
          }
          $subnode = $subnode->nextSibling;
        }
        break;
      default:
        $res[$node->nodeName] = trim($node->nodeValue);
        $i--;
        break;
    }
    $i++;
    $node = $node->nextSibling;
  }  
  return $res;
}

$res = xml_to_result($dom); /*上記の実行*/

/* 以下サンプル1、2と同じ*/
$first = $res['firstResultPosition'];
$last = $first + $res['totalResultsReturned']-1;
echo "<p>Matched ${res[totalResultsAvailable]}, showing $first to $last</p>\n";
if(!empty($res['ResultSetMapUrl'])) {
  echo "<p>Result Set Map: "
    . "<a href=\"${res[ResultSetMapUrl]}\">${res[ResultSetMapUrl]}</a></p>\n";
}
for($i=0; $i<$res['totalResultsReturned']; $i++) {
  foreach($res[$i] as $key=>$value) {
    switch($key) {
      case 'Thumbnail':
        echo "<img src=\"${value[Url]}\" height=\"${value[Height]}\" width=\"${value[Width]}\" />\n";
        break;
      case 'Cache':
        echo "Cache: <a href=\"${value[Url]}\">${value[Url]}</a> [${value[Size]}]<br />\n";
        break;
      case 'PublishDate':
      case 'ModificationDate':
        echo "<b>$key:</b> ".strftime('%X %x',$value)."<br />\n";
        break;
      default:
        if(stristr($key,'url')) echo "<a href=\"$value\">$value</a><br />\n";
        else echo "<b>$key:</b> $value<br />";
        break;
    }
  }
  echo "<hr />\n";
}

next_prev($res, $first, $last);
done();
?>
(※)「DOM(Document Object Model)」:PHPのアドインです。
  このサンプルでは「xpathコンテキスト関数」を使ってDOMノードを取得しています。

5.3.サンプル3を動かしてみよう

サンプル1,2と同様です。ローカルのサーバーの適当なディレクトリに上記の2つのファイルをアップロードし、「YJSearchExample.php」にアクセスします。
YahooAPI PHPサンプル3のようになります。
<前へ 次へ>
目次
1.Yahoo APIでできる事 
2.Yahoo API サンプルを取得する 
3.Yahoo API PHPサンプル1 を動かしてみる 
4.Yahoo API PHPサンプル2 を動かしてみる 
5.Yahoo API PHPサンプル3 を動かしてみる
6.Yahoo API PHPサンプル4 を動かしてみる 
7.Yahoo API PHPサンプル5 を動かしてみる 
サイトマップ お問い合わせ 相互リンク 免責事項
Copyright© 2005 IT-TOP.BIZCopyright© 2005 IT-TOP.BIZ