Разбиение на страницы с помощью курсора API Twitter (вопрос JSON) PHP - PullRequest
1 голос
/ 02 ноября 2009

Как вы знаете, Twitter опубликовал новую нумерацию на основе курсора для некоторых методов API.

В настоящее время я сталкиваюсь с проблемой при кодировании объекта json, поскольку сам курсор на самом деле представляет собой 64-разрядные числа и не поддерживается для кодирования json в PHP.

next_cursor 1299072354878293926

Любое решение для этого? Я не могу поверить, почему Twitter просто не вернул строку для этого ... хм

ТНХ

Ответы [ 3 ]

1 голос
/ 02 ноября 2009

PHP 5.2+ должен преобразовывать 64-битные числа в числа с плавающей точкой, что лучше, чем в предыдущих версиях PHP (которые просто конвертируют его в максимальное 32-битное значение). Лучше всего перейти на 64-битную версию PHP, но обновление до PHP 5.2+ по крайней мере заставит вас работать.

0 голосов
/ 06 ноября 2011

Начиная с PHP 5.4.0 (в настоящее время в бета-версии), можно использовать четвертый параметр json_encode и установить его на JSON_BIGINT_AS_STRING.

0 голосов
/ 08 ноября 2009

Если вы застряли в 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));

Получено от Обсуждение разработки в Твиттере, группа Google .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...