如何修正因位元組計數長度不正確而損壞的序列化字串
錯誤「unserialize() [function .unserialize” ]: Error at offset"在處理損壞的序列化字串時經常出現。 PHP 序列化資料時,它將每個序列化元素的長度儲存為前綴。無法正確反序列化字串。 :
範例:
建議:
不要依賴快速修復,而是更新程式碼至關重要to :
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('').':\"\";'", $data);
對字符串值使用單引號而不是雙引號,以防止與路徑分隔符號衝突。碼.包含一個函數,用於在反序列化之前驗證序列化字串的完整性(範例中提供)如下)。
$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:\fakepath0.jpg;"}'; var_dump(unserialize($data)); // Error var_dump(unserialize($recalculated_data)); // Correctly serialized
以上是如何修復由序列化 PHP 字串中的位元組計數長度不正確導致的'unserialize(): Error at offset”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!