通过file_get_contents通过主题标签获取推文

时间:2012-07-14 15:27:01

标签: php twitter tweets file-read

我试图使用Twitter Search来获取主题标签的推文。

由于我只需阅读json文件,因此我使用file_get_contents代替cURL

file_get_contents('http://search.twitter.com/search.json?q=%23trends');

但是当我在localhost中运行代码时,它会显示以下错误。有什么想法吗?

警告:file_get_contents(http://search.twitter.com/search.json)[function.file-get-contents]:无法打开流:无法找到套接字传输“ssl” - 确实您在配置PHP时忘了启用它吗?

2 个答案:

答案 0 :(得分:1)

除了FGC本地文件之外,最好在每种情况下使用curl而不是FGC。

如果未启用extension=php_curl.dll,则在localhost上启用curl(99.9%的实时主机已启用curl。)

试试这个:

<?php 
//Grab the twitter API with curl
$result = curl_get('http://search.twitter.com/search.json?q=%23trends');

//Decode the json result
//into an Object
$twitter = json_decode($result);
//into an Array
$twitter = json_decode($result,true);

//Debug
print_r($twitter);

function curl_get($url){
    $return = '';
    (function_exists('curl_init')) ? '' : die('cURL Must be installed!');

    $curl = curl_init();
    $header[0] = "Accept: text/xml,application/xml,application/json,application/xhtml+xml,";
    $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
    $header[] = "Cache-Control: max-age=0";
    $header[] = "Connection: keep-alive";
    $header[] = "Keep-Alive: 300";
    $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $header[] = "Accept-Language: en-us,en;q=0.5";

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_USERAGENT, 'TwitterAPI.Grabber (http://example.com/yoursite)');
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 30);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_HTTPPROXYTUNNEL, true);
    curl_setopt($curl, CURLOPT_PROXY, 'http://proxy_address/');
    curl_setopt($curl, CURLOPT_PROXYUSERPWD, 'username:password');
    curl_setopt($curl, CURLOPT_PROXYPORT, 'portno');

    $result = curl_exec($curl);
    curl_close($curl);
    return $result;
}
?>

答案 1 :(得分:-1)

我强烈建议您使用CURL而不是file_get_contents。但是,如果你不能动摇,那么这是我对这个问题的解读:

您的PHP上看起来没有启用SSL。你使用http:// URL并得到了这个错误,我有点惊讶。如果您使用的是https:// URL,我希望您收到该错误。

无论如何,打开你的php.ini文件并取消注释以下行,然后重启你的web服务器,你应该好好去:

    extension=extensions/php_openssl.dll