Masalah:
Apabila menggunakan fungsi unserialize() PHP pada rentetan bersiri, anda menghadapi ralat:
unserialize() [function.unserialize]: Error at offset
Punca:
Ralat ini biasanya disebabkan oleh panjang kiraan bait tidak betul dalam rentetan bersiri, mengakibatkan data tidak sah.
Penyelesaian:
Untuk membetulkannya, anda boleh mengira semula panjang elemen tatasusunan bersiri seperti berikut :
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('').':\"\";'", $data);
Mencegah Isu Masa Depan:
1. Sahkan Data Bersiri:
Gunakan fungsi seperti findSerializeError() untuk mengenal pasti dan mengesan ralat dalam segmen data bersiri.
2. Kaedah Storan Alternatif:
Untuk storan yang lebih selamat dan boleh dipercayai, pertimbangkan untuk menggunakan pengekodan dan penyahkodan base64 untuk menyimpan dan mendapatkan semula data bersiri. Ini memastikan pengendalian bait dan aksara yang betul.
Contoh:
// Save to database $toDatabase = base64_encode(serialize($data)); // Retrieve from database $fromDatabase = unserialize(base64_decode($data));
Petua Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Membaiki Ralat Tidak Padan Panjang Sirialisasi PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!