Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menjana UUID v4 yang Sah dalam PHP?

Bagaimana untuk Menjana UUID v4 yang Sah dalam PHP?

Patricia Arquette
Lepaskan: 2024-12-18 09:19:14
asal
535 orang telah melayarinya

How to Generate Valid v4 UUIDs in PHP?

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:

  • time_hi_and_version (bit 4-7 daripada oktet ke-7)
  • clock_seq_hi_and_reserved (bit 6 & 7 daripada 9 oktet)

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));
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan