Maison >développement back-end >tutoriel php >Comment réparer les erreurs de non-concordance de longueur de sérialisation PHP ?
Problème :
Lors de l'utilisation de la fonction unserialize() de PHP sur une chaîne sérialisée, vous rencontrez l'erreur :
unserialize() [function.unserialize]: Error at offset
Cause :
Cette erreur est généralement causée par un nombre d'octets incorrect longueur dans la chaîne sérialisée, ce qui entraîne des données invalides.
Solution :
Pour remédier à cela, vous pouvez recalculer les longueurs des éléments du tableau sérialisé comme suit :
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('').':\"\";'", $data);
Prévenir les problèmes futurs :
1. Valider les données sérialisées :
Utilisez une fonction telle que findSerializeError() pour identifier et localiser les erreurs dans les segments de données sérialisées.
2. Méthode de stockage alternative :
Pour un stockage plus sécurisé et fiable, envisagez d'utiliser l'encodage et le décodage base64 pour enregistrer et récupérer des données sérialisées. Cela garantit une gestion correcte des octets et des caractères.
Exemple :
// Save to database $toDatabase = base64_encode(serialize($data)); // Retrieve from database $fromDatabase = unserialize(base64_decode($data));
Conseils supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!