問題:
在序列化字串上使用PHP 的unserialize() 函數時,遇到錯誤:
unserialize() [function.unserialize]: Error at offset
原因:
這個錯誤通常是由於序列化字串中的位元組計數長度不正確,導致資料無效。
解:
要修正此問題,您可以重新計算長度序列化陣列的元素如下:
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('').':\"\";'", $data);
防止將來出現問題:
1。驗證序列化資料:
使用 findSerializeError() 等函數來識別和定位序列化資料段中的錯誤。
2.替代儲存方法:
為了更安全可靠的存儲,請考慮使用 Base64 編碼和解碼來保存和檢索序列化資料。這可確保正確的位元組和字元處理。
範例:
// Save to database $toDatabase = base64_encode(serialize($data)); // Retrieve from database $fromDatabase = unserialize(base64_decode($data));
其他提示:
以上是如何修復 PHP 序列化長度不符錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!