recherche

Maison  >  Questions et réponses  >  le corps du texte

php - Erreur de désérialisation, les données d'arrière-plan deviennent suspectes?

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_u1582phpcn_u15822806 Il y a quelques jours884

répondre à tous(4)je répondrai

  • PHPz

    PHPz2017-05-16 13:10:00

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

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 13:10:00

    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

    .

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:10:00

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

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

    répondre
    0
  • 怪我咯

    怪我咯2017-05-16 13:10:00

    unserialize(base64_decode($str))

    répondre
    0
  • Annulerrépondre