dポイントプレゼントキャンペーン実施中!

Yahoo API を利用してWEB検索の機能を使おうと考えています。

そこで、

Yahoo!デベロッパーネットワーク - サンプルコード集 ;検索サンプルコード
http://developer.yahoo.co.jp/sample/search/sampl …

このページよりphpファイルをダウンロードして試し一応成功しました。

http://cgi.geocities.jp/ydevnet/sample/search/sa …
(このページはサンプルです)

検索結果を見てみるとごちゃごちゃしていて見にくいです。


そこで以下のようなページにしたいのですが
http://phpspot.org/lab/yapi/web.php?q=yahoo

簡単に修正できないでしょうか?


ファイルは
・common.php
・YJSearchExample.php

なのですが、どの辺りを修正すればいいでしょうか?
ご指導よろしくお願いします。

A 回答 (2件)

$xml->Resultという配列に連想配列で格納されている値を配列のキー(連想配列名)によって、switch文で振り分けを行っているものになります。


$keyと記述されている部分が、連想配列名
$valueと記述されている部分がその連想配列名に格納されている値
です。

ですので、ここのswitch文の振り分け方法を修正してやれば、表示結果を修正することが出来るのですが、
配列の扱いや条件分岐を修正するのが困難、ということであれば
質問者さんの「簡単に修正できないか」という条件に関しては、「No」となってしまいます。

この回答への補足

ご解答ありがとうございまさいた。

自分でなんとかここまでできました。

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();
?>


すいませんが、よろしくお願いします。

補足日時:2009/06/19 09:20
    • good
    • 0

YJSearchExample.php



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

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

お礼日時:2009/06/18 23:02

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