ホームページ >バックエンド開発 >PHPチュートリアル >PHP シリアル化長不一致エラーを修復するにはどうすればよいですか?
問題:
シリアル化された文字列に対して 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 中国語 Web サイトの他の関連記事を参照してください。