Il est possible que l'erreur "unserialize() [function.unserialize] : erreur à l'offset" soit causée par chaîne sérialisée invalide en raison d'une longueur de nombre d'octets incorrecte.
Pour résoudre ce problème, nous devons recalculer la longueur des éléments dans le tableau sérialisé. Voici un exemple utilisant les données fournies :
$data = 'a:10:{s:16:"submit_editorial";b:0;s:15:"submit_orig_url";s:13:"www.bbc.co.uk";s:12:"submit_title";s:14:"No title found";s:14:"submit_content";s:12:"dnfsdkfjdfdf";s:15:"submit_category";i:2;s:11:"submit_tags";s:3:"bbc";s:9:"submit_id";b:0;s:16:"submit_subscribe";i:0;s:15:"submit_comments";s:4:"open";s:5:"image";s:19:"C:fakepath100.jpg";}'; $data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('').':\"\";'", $data);
Après avoir recalculé les longueurs, nous pouvons maintenant désérialiser les données sans l'erreur :
var_dump(unserialize($data));
Sortie :
array 'submit_editorial' => boolean false 'submit_orig_url' => string 'www.bbc.co.uk' (length=13) 'submit_title' => string 'No title found' (length=14) 'submit_content' => string 'dnfsdkfjdfdf' (length=12) 'submit_category' => int 2 'submit_tags' => string 'bbc' (length=3) 'submit_id' => boolean false 'submit_subscribe' => int 0 'submit_comments' => string 'open' (length=4) 'image' => string 'C:fakepath100.jpg' (length=17)
Cependant, ce n'est qu'une solution rapide. Pour éviter de futurs problèmes de sérialisation, il est important de garantir que les données d'origine sont correctement sérialisées avec un nombre d'octets correct. Vous pouvez le faire en utilisant une méthode de sérialisation appropriée telle que :
$serializedData = serialize($data);
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!