• 締切済み

Yahoo API  WEB検索の事で!

Yahoo API を利用してWEB検索の機能を使おうと考えています。 そこで、 Yahoo!デベロッパーネットワーク - サンプルコード集 ;検索サンプルコード http://developer.yahoo.co.jp/sample/search/sample1.html このページよりphpファイルをダウンロードして試し一応成功しました。 http://cgi.geocities.jp/ydevnet/sample/search/sample1/YJSearchExample.php (このページはサンプルです) 検索結果を見てみるとごちゃごちゃしていて見にくいです。 そこで以下のようなページにしたいのですが http://phpspot.org/lab/yapi/web.php?q=yahoo 簡単に修正できないでしょうか? ファイルは ・common.php ・YJSearchExample.php なのですが、どの辺りを修正すればいいでしょうか? ご指導よろしくお願いします。

みんなの回答

回答No.2

$xml->Resultという配列に連想配列で格納されている値を配列のキー(連想配列名)によって、switch文で振り分けを行っているものになります。 $keyと記述されている部分が、連想配列名 $valueと記述されている部分がその連想配列名に格納されている値 です。 ですので、ここのswitch文の振り分け方法を修正してやれば、表示結果を修正することが出来るのですが、 配列の扱いや条件分岐を修正するのが困難、ということであれば 質問者さんの「簡単に修正できないか」という条件に関しては、「No」となってしまいます。

siraku
質問者

補足

ご解答ありがとうございまさいた。 自分でなんとかここまでできました。 http://daily.xsrv.jp/YJSearchExample.php? 後は、タイトルを太字にしてそこにリンクを貼りたいのですが、自分の力では出来ませんでした。(あと、検索結果で各URLの下に「text/html」と言うのも消したいです) すいませんが、どなたか教えていただけないでしょうか? よろしくお願いします。 ちなみにYJSearchExample.phpは以下のようになっています。 <?php /** @mainpage * 検索ページ */ /** * @file * @brief 検索結果を表示 * * 検索フォームを表示し、 * フォームから入力された値を条件に、ウェブ検索APIを利用して、検索した結果をhtmlに埋め込んで表示します。 * * PHP version 5 */ require_once('./common.php');//共通ファイル読み込み(使用する前に、appidを指定してください。) $q=build_query(); // 選択したAPIの種類を設定 $xml = simplexml_load_file($service[$_REQUEST['type']].$q); // root要素を参照 foreach($xml->attributes() as $name=>$attr) { $res[$name]=$attr; } $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($xml->Result[$i] as $key=>$value) { switch($key) { case 'Thumbnail': echo "<img src=\"{$value->Url}\" height=\"{$value->Height}\" width=\"{$value->Width}\" />\n"; break; case 'PublishDate': case 'ModificationDate': break; default: if(stristr($key,'url')){ echo "<a href=\"$value\">$value</a><br />\n"; } else { echo "$value<br />"; } break; } } echo "<hr />\n"; } next_prev($res, $first, $last); done(); ?> すいませんが、よろしくお願いします。

回答No.1

YJSearchExample.php の ----------------------------------------------------- for($i=0; $i<$res['totalResultsReturned']; $i++) { foreach($xml->Result[$i] as $key=>$value) { ----------------------------------------------------- よりしたにある、switch文のところで 配列のキーにより、HTMLタグで文字列を囲ったものをecho文で出力しています。 恐らくここの条件分岐やHTMLタグで$valueを囲う部分を修正すれば、表示をカスタマイズできるのではないかと思います。

siraku
質問者

お礼

早速の回答ありがとうございます。 大変申し訳ありませんが、もう少し詳しく教えて頂けないでしょうか? よろしくお願いします。

関連するQ&A