我能够用我的API键从雅虎检索结果,使用在雅虎开发者网站上找到的说明。指南/codeexamples.html#
代码:
if ($_POST['query'])
{
$newline="<br />";
$query = urlencode("'{$_POST['query']}'");
require("OAuth.php");
$cc_key = "key goes here";
$cc_secret = "secret goes here";
$url = "http://yboss.yahooapis.com/ysearch/web";
$args = array();
$args["q"] = "$query";
$args["format"] = "json";
$consumer = new OAuthConsumer($cc_key, $cc_secret);
$request = OAuthRequest::from_consumer_and_token($consumer, NULL,"GET", $url, $args);
$request->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $consumer, NULL);
$url = sprintf("%s?%s", $url, OAuthUtil::build_http_query($args));
$ch = curl_init();
$headers = array($request->to_header());
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$rsp = curl_exec($ch);
$results = json_decode($rsp);
print_r($results);
}使用上面所示的print_r($results),我得到了如下结果(搜索“”所显示的前三个结果的摘录):
请注意,我已将网址更改为"WWW“,因为我要求至少有10个声誉才能发布超过2个LINKS.。
stdClass对象(响应=> stdClass对象)( responsecode => 200web => stdClass对象)(启动=> 0计数=> 50总计结果=> 36800000结果=>数组)( => stdClass对象( date => clickurl => WWW url => WWW dispurl => en.wiki/ Elephant title => Elephant - Wikipedia ),免费的百科全书抽象stdClass Elephant具有多种功能,包括呼吸、嗅觉、观察到一头大象跪在前腿上觅食,.)1 => stdClass Object ( date => clickurl => WWW url => WWW dispurl => www.defenders.org/大象/基本事实标题=> Elephant => => elephant => Elephant => Elephants =>=>Elephant。大象的基本事实更多关于大象:对大象的威胁更多关于大象:基本事实。威胁。辩护人在帮什么忙。2 => stdClass对象( date => clickurl => WWW url => WWW dispurl => => title => => Elephant facts和Pictures --国家地理儿童将=>儿童的有关大象的特征抽象出来,包括照片、视频、音频、有趣的事实、电子邮件明信片和其他动物的链接)。3 elephant.elehost.com/About_Elephants/about_elephants.htm => stdClass对象( date => clickurl => WWW url => WWW dispurl => => title => About Elephant Information =>!这一页包括大象相关事实的摘要,让你进入大象的世界。)
我试图以可阅读的格式输出结果如下:
代码尝试1:
foreach ($results->{ 'results' } as $item )
{
echo "<a href=\"{$item->{ 'url' }}\"><font color ='blue'>{$item->{ 'title' }}</font></a>".": "."$newline"."$newline".$item->{ 'abstract' }."\n\n";
}我也尝试了以下几点,但没有成功:
代码尝试2:
echo $results['results']['url'];
echo $results['results']['title'];
echo $results['results']['abstract'];对该怎么办有什么想法吗?
谢谢。
发布于 2013-07-01 09:27:14
我注意到您刚刚复制了文档的代码示例的代码,但没关系。
您访问results数组的方式是错误的:
foreach ($results->bossresponse->web->results as $result)
{
//do stuff
echo $result->title.'<br/>';
}或者,正如cptnk所建议的:
$results = json_decode($rsp, true);
//force to assoc-array, which will allow array-access
foreach($results['bossresponse']['web']['results'] as $result)
{
//$result is array here, but do the same stuff
echo $result['title'].'<br/>';
}或者,把两者结合起来
foreach($results->bossresponse->web->results as $result)
{
$result = (array) $result;//casts stdClass to array
printf('<a href="%s">%s</a><br/>', $result['url'], $result['title']);
}https://stackoverflow.com/questions/17400966
复制相似问题