你现在的位置:首页 > PHP网站建设知识库 > twitter api > 正文

使用PHP调用Twitter微博数据(json格式)

Twitter官方给出的接口调用非常简单,几乎可以10行代码搞定,不过为了更高效,我使用了缓存,方式刷新次数过猛而对数据调用产生影响:

$username = 'username';
$tweet_count = '20';
$getjson = 'https://api.twitter.com/1/statuses/user_timeline.json?screen_name=' . $username . '&count=' . $count . '&include_entities=1&include_rts=1';
$expire = 120; //过期时间,单位秒,2分钟
$cache_file = './sqlite_twitter.dat';  //缓存文件

$arr = array();
clearstatcache();

    if (file_exists($cache_file) && time() <= (filemtime($cache_file) + $expire)) {
        //缓存文件存在且未过期则直接读取
        $arr = unserialize(file_get_contents($cache_file));
echo "********缓存存在且未过期,直接读取缓存数据********";
$timelost = $expire - (time() - filemtime($cache_file));
echo "***********Twitter距离下次更新还剩 $timelost 秒***********";
    }else{
        //缓存文件不存在或已过期则读取json数据处理并缓存
$content = file_get_contents($getjson); //远程调用
        $arr = json_decode($content, true);
if($arr) {
        file_put_contents($cache_file, serialize($arr)); //写入缓存文件
echo "*********读取Twitter接口数据成功*********";
}else{
echo "**error**读取Twitter接口数据失败**error**";
        $arr = unserialize(file_get_contents($cache_file));
echo "******************|*******************";
echo "******************|*******************";
echo "******************|*******************";
echo "******************|*******************";
echo "******************V*******************";
echo "*********调用缓存数据数据成功*********";
}

    }


以上代码就可以直接调用到Twitter的数据,并保存在数组$arr中,接下来只要包数组中的数据调用显示就完成了:

if($arr){
        foreach ($arr as $tweet) {
                $datetime = $tweet[created_at];
                $time = strtotime($datetime);
                $content = str_replace("'","''",$tweet[text]);
echo "$content | $time <br>";
}
}else{
echo "twitter 数据获取失败!";
}


通过php循环输出数组,把Twitter的内容就全部的输出显示了。

其中$content = str_replace(“‘”,”””,$tweet[text]); 是把字符串中带单引号的字符转换成2个单引号,这是因为在写入sqlite是会用到,不写入sqlite的朋友可以把该转换去掉。