我正在尝试建立一个网站,用户可以在其中输入他们的网站并检查他们在 Google 中的索引页面。 就像我们做的那样
site:domain.com
。
我正在使用 Google API,这里是 API 的链接(我知道它已被弃用):
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=
当我使用如下代码时:
<?php
function getGoogleCount($domain) {
$content = file_get_contents('http://ajax.googleapis.com/ajax/services/' .
'search/web?v=1.0&filter=0&q=site:' . urlencode($domain));
$data = json_decode($content);
return ($data->responseData->cursor->estimatedResultCount);
}
echo getGoogleCount('stackoverflow.com');
?>
就我想知道结果计数而言,这很好, 但接下来我想要的就是在我的网站上列出所有结果。我无法获取结果,因为当我们写时:
$data->responseData->cursor->estimatedResultCount
直线前进, 但当我们试图得到结果时。我不知道该怎么做,只是打印想法:
$data->responseData->results->[url & title & content here]
因为这里的结果是一个数组,我不知道在这种情况下如何将信息存储在数组中。
找了好久都没有找到相关内容......
最简单的方法是使用:
$data = json_decode($content, true);
这会将对象转换为普通的关联数组,这可能更容易处理。 然后你可以通过这样的方式访问你的价值观:
$results = $data['responseData']['results']; //array
$googleCount = $data['responseData']['cursor']['estimatedResultCount'];
然后根据结果你可以做这样的事情:
foreach ($results as $result) {
echo $result['title'].' -> '.$result['url'] . '<br />';
}
但是当然,如果你不喜欢关联数组而更喜欢对象,你也可以这样做:
$data = json_decode($content);
foreach ($data->responseData->results as $result) {
echo $result->title .' -> '.$result->url.'<br />';
}
如果您想检查哪些属性具有 $result,只需使用
print_r
或 var_dump
。