php - Erreur de désérialisation, les données d'arrière-plan deviennent suspectes?
phpcn_u1582
phpcn_u1582 2017-05-16 13:08:00
0
4
855

Utilisez serialize() pour sérialiser les données et les insérer dans la base de données, puis utilisez unserialize() pour les désérialiser et rencontrer des erreurs de chaîne de données ;
Le contenu de l'erreur est :unserialize() [fonction .unserialize ] : Erreur au décalage 0 sur 2544 octets

J'ai cherché de nombreuses solutions sur Google et ils ont tous dit que le problème était dû à des problèmes d'encodage.
L'endroit où je l'ai inséré a donc été changé en base64_encode(serialize($str));
L'endroit où je l'ai inséré lu, il a été modifié en
unserialize(preg_replace('!s:(d+):"(.*?)";!se', '"s:".strlen("$2").":"$2";"', $string))

Je l'ai essayé et cela a fonctionné, mais cela n'a pas été complètement résolu. Plus tard, la même erreur s'est produite dans certains datagrammes, j'ai constaté que le contenu inséré s'est transformé en quelque chose de similaire au code tronqué ci-dessous.

< /p>

S'il vous plaît, aidez-moi à découvrir la raison, de préférence plus en détail.

phpcn_u1582
phpcn_u1582

répondre à tous(4)
PHPzhong

Publiez des données sources, sinon comment pouvez-vous les tester ? .

洪涛

Confirmez s'il y a un problème avec vos données sérialisées. J'ai déjà utilisé Serialize, mais cela a toujours eu des problèmes. Ensuite, je n'ai eu d'autre choix que de passer à json_decode

.
曾经蜡笔没有小新

base64_encode("a:1") == "YTox".

Ces données sont codées en base64 et non tronquées.

刘奇
unserialize(base64_decode($str))
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal