im writting a twitter mashup service. When i receive the json data, some of the twit ids are greater than 2147483647 (which is the maximum allowed integer on 32bit servers).
I came up with a solution that works, which is converting the integers to strings; that way the json_decode() function won't have any problems when trying to generate the array.
This is what i need to achieve:
Before (original JSON data)
[{"name":"john","id":5932725006},{"name":"max","id":4953467146}]
After (solution applied)
[{"name":"john","id":"5932725006"},{"name":"max","id":"4953467146"}]
I'm thinking of a preg_match implementation, but i have no idea on how to do it bullet-proof. Any help will be much appreciated.
You can use
preg_replace
to capture the numbers and add the quotes, something like this:Try the above example here.
If you use PHP 5.2 those long ids will be parsed into a float, which though not ideal at least gives you another 21 bits of integer precision, which should easily be enough to store those ids. (A 64-bit server would be ideal of course.)
If it comes down to it, you can attempt to use the
big_int
PECL extension. This lets PHP use numbers that are extraordinarily large, should you need to. It's a big leap, but if you're routinely dealing with numbers that border on the edge of mindnumbingness, you'll likely find it helpful.