Membaiki Rentetan Bersiri yang Rosak Kerana Panjang Kiraan Bait Yang Salah
Pensirian melibatkan penukaran struktur data yang kompleks kepada format yang lebih ringkas dan boleh dibaca mesin. Walau bagaimanapun, jika rentetan bersiri rosak, ia boleh menyebabkan ralat. Dalam kes anda, ralat disebabkan oleh panjang kiraan bait yang salah.
Sebab Rasuah
Panjang kiraan bait dalam rentetan bersiri menunjukkan saiz setiap elemen . Jika kiraan ini tidak betul, proses penyahserialisasian mungkin gagal. Ini boleh berlaku jika petikan berganda (") digunakan dan bukannya petikan tunggal ('), menyebabkan rentetan itu tersilap dikenal pasti sebagai elemen tunggal.
Pembetulan Cepat
Untuk membaiki rentetan yang rosak, anda boleh mengira semula panjang kiraan bait setiap elemen:
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('').':\"\";'", $data);
Mencegah Rasuah Masa Depan
Untuk mencegah rasuah pada masa hadapan, pertimbangkan untuk melaksanakan perkara berikut:
function sanitize(&$value, $key) { $value = addslashes($value); } array_walk($h->vars['submitted_data'], "satitize");
Mengesan Rasuah
Untuk mengesan rentetan bersiri rosak pada masa hadapan, gunakan fungsi berikut:
function findSerializeError($data1) { // ... (code goes here) }
Storan Pangkalan Data Yang Dipertingkat
Pertimbangkan untuk menggunakan kaedah storan yang lebih mantap, seperti pengekodan base64, sebelum menyimpan data bersiri ke pangkalan data:
$toDatabase = base64_encode(serialize($data));
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaiki Rentetan Bersiri yang Rosak dengan Panjang Kiraan Bait Yang Salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!