澳门新葡亰平台游戏网站利用Yahoo! Search API开发自已的搜索引擎-php版

// Ok, now that we have the results in an easy to use format,// display
them. It’s quite ugly because I am using a single// display loop to
display every type and I don’t really understand HTML$first =
$res[‘firstResultPosition’];$last = $first +
$res[‘totalResultsReturned’]-1;echo “pMatched
${res[totalResultsAvailable]}, showing $first to
$last/p/n”;if(!empty($res[‘ResultSetMapUrl’])) { echo “pResult 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’: echo “b$key:/b “.strftime(‘%X %x’,$value);
break; default: if(stristr($key,’url’)) echo “a
href=/”$value/”$value/abr //n”; else echo “b$key:/b $valuebr /”; break;
} } echo “hr //n”;}

<?php
// Yahoo Web Services PHP Example Code
// Rasmus Lerdorf
// www.111cn.net

// Parse the XML and check it for errorsif (!$dom =
domxml_open_mem($xml,DOMXML_LOAD_PARSING,$error)) { echo “XML parse
error/n”; foreach ($error as $errorline) { /* For production use this
should obviously be logged to a file instead */ echo
$errorline[‘errormessage’].”br //n”; echo ” Node : ” .
$errorline[‘nodename’] . “br //n”; echo ” Line : ” .
$errorline[‘line’] . “br //n”; echo ” Column : ” . $errorline[‘col’]
. “br //n”; } done();}

if(empty($_REQUEST[”query”]) ||
!in_array($_REQUEST[”type”],array_keys($service))) done();

$appid = ‘YahooDemo’;// 在这输入你申请的ID号

// Create Previous/Next Page linksif($start 1) echo ‘a
href=”/YahooSearchExample.php’.
‘?query=’.rawurlencode($_REQUEST[‘query’]).
‘&zip=’.rawurlencode($_REQUEST[‘zip’]).
‘&type=’.rawurlencode($_REQUEST[‘type’]).
‘&start=’.($start-10).'”-Previous Page/a ‘;if($last
$res[‘totalResultsAvailable’]) echo ‘a href=”/YahooSearchExample.php’.
‘?query=’.rawurlencode($_REQUEST[‘query’]).
‘&zip=’.rawurlencode($_REQUEST[‘zip’]).
‘&type=’.rawurlencode($_REQUEST[‘type’]). ‘&start=’.($last+1).'”Next
Page-/a’;done();?

// Ok, here we go, we have the query and the type of search is valid
// First build the query
$q = ‘

美国东部时间3月1日,雅虎公司联合创始人之一的杨致远将宣布公司的搜索网络将进入Web服务。雅虎公司在网站建立了Yahoo
Search Developer Network,公司计划在此纽约举行的搜索引擎战略大会(Search
Engine Strategies
Conference)上推出这一计划。该网络将允许开发者在雅虎搜索之上建立新的应用程序,其中包括图像、视频、新闻以及地区搜索等内容。想要使用这项服务的会员必须先去_application
申请一个自已的ID号,注:每个ID号每天只能搜索5000次。

$service =
array(”image”=>””,
                
”local”=>””,
                
”news”=>””,
                
”video”=>””,
                
”web”=>””);
?>
<html>
<head><title>PHP Yahoo Web Service Example
Code</title></head>
<body>
<form action=”YahooSearchExample.php” method=”GET”>
Search Term: <input type=”text” name=”query” /><br />
Zip Code: <input type=”text” name=”zip” /> (for local
search)<br />
<input type=”submit” value=” Go! ” />
<select name=”type”>
<?php foreach($service as $name => $val) {
    if(!empty($_REQUEST[”type”]) && $name ==
$_REQUEST[”type”])
      echo “<option SELECTED>$name</option>n”;
    else echo “<option>$name</option>n”;
} ?>
</select>
</form>
<?php
function done() {?>
</body></html>
<?php
exit;
}

// Ok, here we go, we have the query and the type of search is valid//
First build the query$q =
‘?query=’.rawurlencode($_REQUEST[‘query’]);if(!empty($_REQUEST[‘zip’]))
$q.=”&zip=”.$_REQUEST[‘zip’];if(!empty($_REQUEST[‘start’]))
$q.=”&start=”.$_REQUEST[‘start’];$q .= “&appid=$appid”;

$appid = ”YahooDemo”;
// 在这输入你申请的ID号

$node = $root-first_child(); $i = 0; while($node) {
switch($node-tagname) { case ‘Result’: $subnode = $node-first_child();
while($subnode) { $subnodes = $subnode-child_nodes();
if(!empty($subnodes)) foreach($subnodes as $k=$n) {
if(empty($n-tagname)) $res[$i][$subnode-tagname] =
trim($n-get_content()); else
$res[$i][$subnode-tagname][$n-tagname]=trim($n-get_content()); }
$subnode = $subnode-next_sibling(); } break; default:
$res[$node-tagname] = trim($node-get_content()); $i–; break; } $i++;
$node = $node-next_sibling(); } return $res;}

// Now traverse the DOM with this function// It is basically a generic
parser that turns limited XML into a PHP array// with only a couple of
hardcoded tags which are common across all the// result xml from the web
servicesfunction xml_to_result($dom) { $root =
$dom-document_element(); $res[‘totalResultsAvailable’] =
$root-get_attribute(‘totalResultsAvailable’);
$res[‘totalResultsReturned’] =
$root-get_attribute(‘totalResultsReturned’);
$res[‘firstResultPosition’] =
$root-get_attribute(‘firstResultPosition’);

下面我们看一下,如何用PHP脚本调用Yahoo! Search
API实现搜索的效果,全部脚本如下:

?php// Yahoo Web Services PHP Example Code// Rasmus Lerdorf//

$res = xml_to_result($dom);

$service = array(‘image’=”, ‘local’=”, ‘news’=”, ‘video’=”,
‘web’=”);?htmlheadtitlePHP Yahoo Web Service Example
Code/title/headbodyform action=”YahooSearchExample.php”
method=”GET”Search Term: input type=”text” name=”query” /br /Zip Code:
input type=”text” name=”zip” / (for local search)br /input type=”submit”
value=” Go! ” /select name=”type”?php foreach($service as $name = $val)
{ if(!empty($_REQUEST[‘type’]) && $name == $_REQUEST[‘type’]) echo
“option SELECTED$name/option/n”; else echo “option$name/option/n”;}
?/select/form?phpfunction done() {?/body/html?phpexit;}

if(empty($_REQUEST[‘query’]) ||
!in_array($_REQUEST[‘type’],array_keys($service))) done();

// Then send it to the appropriate service$xml =
file_get_contents($service[$_REQUEST[‘type’]].$q);

有兴趣的朋友还可以看一下由[动态网站制作指南]所制作的ASP版本:

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图