2009-11-02 32 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