-3

对于一个 URL,我试图通过这个 API 请求来计算它的推文:

http://urls.api.twitter.com/1/urls/count.json?url=http://www.bbc.co.uk

这(在浏览器中)返回以下 Json:

{"count":216743,"url":"http:\/\/www.bbc.co.uk\/"}

我可以手动解析响应:

$tweets = json_decode('{"count":216743,"url":"http:\/\/www.bbc.co.uk\/"}');
$this->set('tweets', $tweets->{'count'});

当我输入 URL 而不是 Json 时,它不会请求任何数据。我将如何使以下工作?

$tweets = json_decode('http://urls.api.twitter.com/1/urls/count.json?url=http://www.bbc.co.uk');
$this->set('tweets', $tweets->{'count'});
4

2 回答 2

5

json_decode期望得到一个 JSON 字符串。http://urls.api.twitter.com/1/urls/count.json?url=http://www.bbc.co.uk不是 JSON 字符串,而是 URL。json_decode不获取 URL。您需要自己获取 URL,然后将结果传递给json_decode

$json = file_get_contents('http://urls.api.twitter.com/1/urls/count.json?url=http://www.bbc.co.uk');
$tweets = json_decode($json);
于 2012-08-14T10:30:32.120 回答
2

您不能json_encode()直接在 URL 上使用。首先获取页面的内容(例如使用file_get_contents- docu link),然后尝试对其进行解码:

$content = file_get_contents('http://urls.api.twitter.com/1/urls/count.json?url=http://www.bbc.co.uk');
$tweets = json_decode( $content );

// do your stuff
于 2012-08-14T10:30:48.627 回答