32bit bir sunucu üzerinde PHP json_decode

3 Cevap php

Bir twitter mashup hizmeti yazma im. I json veri aldığınızda, twit kimlikleri bazı 2147483647 (32bit sunucularında izin verilen maksimum sayı olan) daha büyüktür.

Ben dizeleri tamsayılar dönüştürme, hangi çalışan bir çözüm ile geldi; bu şekilde json_decode () fonksiyonu dizi oluşturmak için çalışırken herhangi bir sorun olmaz.

Bu i başarmak için gerekenler:

Before (original JSON data)

[{"name":"john","id":5932725006},{"name":"max","id":4953467146}]

After (solution applied)

[{"name":"john","id":"5932725006"},{"name":"max","id":"4953467146"}]

Ben bir preg_match uygulama düşünüyorum, ama o kurşun geçirmez yapmak konusunda hiçbir fikrim yok. Herhangi bir yardım çok takdir edilecektir.

3 Cevap

PHP 5.2 kullanıyorsanız, bu uzun kimlikleri ideal değil en azından size kolayca bu kimlikleri saklamak için yeterli olmalıdır tamsayı hassasiyet başka bir 21 bit, verir rağmen bir şamandıra, ayrıştırılır olacak. (64-bit sunucu elbette ideal olacaktır.)

Bunu aşağı gelirse, big_int PECL uzantısını kullanmayı deneyebilirsiniz. Bu olağanüstü büyük PHP kullanımı numaralarını sağlar, size gerekir gerekir. Bu büyük bir sıçrama, ancak rutin mindnumbingness kenarında numaraları ile bu sınırı uğraşıyoruz eğer, büyük olasılıkla bu yararlı bulacaksınız.