2009-11-02 34 views
1

正如你所知,Twitter已经为一些API方法发布了基于新的基于光标的分页。Twitter API基于光标的分页(JSON问题)PHP

目前,编码json对象时遇到问题,因为游标本身实际上是一个64位数字,并且不支持PHP中的json编码。

next_cursor 1299072354878293926 

任何解决方案?我简直不敢相信,为什么没有Twitter的只是返回字符串,它... HMMP

THX

+1

为什么他们会返回一个字符串,如果它是一个整数?不是他们的错PHP的JSON编码不处理它的权利...... – ceejayoz

+0

正是......这就是我想要弄清楚......我的意思是......至少应该适用于所有不是它.. 如果有更好的方法而不是黑客的价值? – andy

回答

1

PHP 5.2+应的64位数字转换成浮动,这比PHP的以前版本更好(其只会将其转换为最大32位值)。最好的选择是转移到64位版本的PHP,但更新到PHP 5.2+至少可以让你启动并运行。

+0

它确实隐藏到浮动..但我需要的数字让我浏览数据...我使用PHP 5.2 + ...转换为64位似乎不可能对我来说,虽然它一定会解决问题... – andy

0

如果您使用32位系统,您可以使用正则表达式将光标转换为字符串,然后将其用于进一步的请求。

下面是我使用来实现这个PHP函数:

function jsonIntToStr($json){ 
$pattern = "/\"next_cursor\":([0-9]+),/"; 
$replace = "\"next_cursor\":\"$1\","; 
$new_json = preg_replace($pattern, $replace, $json); 
$pattern = "/\"previous_cursor\":([0-9]+),/"; 
$replace = "\"previous_cursor\":\"$1\","; 
$new_json = preg_replace($pattern, $replace, $new_json); 
return $new_json; 
} 

,你可以使用它像:

$json_result = json_decode(jsonIntToStr($twitter_response)); 

得到它从twitter development talk google group

0

由于PHP 5.4.0(目前处于beta版),可以使用json_encode的第四个参数并将其设置为JSON_BIGINT_AS_STRING