Repairing Corrupted Serialized Strings with Incorrect Byte Count Length
The error "unserialize() [function.unserialize]: Error at offset" occurs when deserializing corrupted data due to an incorrect byte count length. To resolve this issue, recalculate the length of the elements in the serialized array.
Incorrect Serialization:
$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";}';
Output:
Notice: unserialize() [function.unserialize]: Error at offset 337 of 338 bytes
Recalculated Serialization:
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('').':\"\";'", $data);
Output:
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)
Additional Considerations:
The above is the detailed content of How to Fix 'unserialize(): Error at offset' Caused by Incorrect Byte Count Length in Serialized Strings?. For more information, please follow other related articles on the PHP Chinese website!