首頁 > 資料庫 > mysql教程 > 如何修復由序列化 PHP 字串中的位元組計數長度不正確導致的'unserialize(): Error at offset”?

如何修復由序列化 PHP 字串中的位元組計數長度不正確導致的'unserialize(): Error at offset”?

Barbara Streisand
發布: 2024-12-22 19:10:14
原創
920 人瀏覽過

How to Fix

如何修正因位元組計數長度不正確而損壞的序列化字串

錯誤「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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板