Menjana UUID v4 yang Sah dalam PHP
Menentukan format yang betul untuk menjana UUID v4 yang sah dalam PHP boleh menjadi mencabar. UUID (Pengecam Unik Sejagat) mesti mematuhi corak tertentu: "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx", dengan "y" mewakili sama ada 8, 9, A atau B.
Penyelesaian dan Had Sedia Ada
Satu penyelesaian percubaan melibatkan memecahkan UUID kepada komponen dan menggunakan rawak penjanaan nombor bagi setiap bahagian. Walau bagaimanapun, ia gagal untuk menetapkan nilai "y" dengan betul.
Membetulkan Fungsi
Untuk membetulkan isu ini, kita perlu membuat manipulasi bit tertentu pada data yang dihasilkan . Menurut RFC 4122 - Bahagian 4.4, bit berikut memerlukan pengubahsuaian:
Fungsi Kemas Kini
Berikut ialah fungsi PHP yang dikemas kini yang menjana UUID v4 yang sah:
function uuidv4() { $data = random_bytes(16); $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100 $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10 return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); }
Menjana Rawak Data
Untuk menjana data rawak yang mencukupi, ia disyorkan untuk menggunakan sama ada openssl_random_pseudo_bytes() atau random_bytes() (untuk PHP 7 dan ke atas). Untuk versi PHP yang lebih lama, openssl_random_pseudo_bytes() boleh digunakan.
Atas ialah kandungan terperinci Bagaimana untuk Menjana UUID v4 yang Sah dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!