32位服务器上的PHP json_decode
问题描述:
即时消息正在写一个twitter mashup服务。当我收到json数据时,某些twit ID大于(这是32位服务器上允许的最大整数)。32位服务器上的PHP json_decode
我想出了一个解决方案,它将整数转换为字符串;这样,json_decode()函数在尝试生成数组时不会有任何问题。
这就是我需要实现:
之前(原始JSON数据)(应用解决方案)
[{"name":"john","id":5932725006},{"name":"max","id":4953467146}]
后
[{"name":"john","id":"5932725006"},{"name":"max","id":"4953467146"}]
我想的preg_match实现,但我不知道如何做到防弹。任何帮助都感激不尽。
答
您可以使用preg_replace
捕捉数字,并添加引号,像这样:
$jsonString = '[{"name":"john","id":5932725006},{"name":"max","id":4953467146}]';
echo preg_replace('/("\w+"):(\d+)/', '\\1:"\\2"', $jsonString);
//prints [{"name":"john","id":"5932725006"},{"name":"max","id":"4953467146"}]
试试上面的例子here。
答
答
如果涉及到它,您可以尝试使用big_int
PECL扩展。这可以让PHP使用非常大的数字,如果需要的话。这是一个很大的飞跃,但是如果你经常处理与头脑相关的边缘数字,你可能会发现它很有帮助。
你会想''id:'在那个表达式中,当然?否则,它将匹配任何数字序列,严重破坏包含数字的任何字符串。 – bobince 2009-11-22 01:08:17
。它工作正常......但它会更好,如果它只会匹配“ID”附近的数字: – andufo 2009-11-22 01:11:46
@bobnice:同意,编辑:) – CMS 2009-11-22 01:13:51