Heim > Backend-Entwicklung > PHP-Tutorial > Wie generiere ich gültige v4-UUIDs in PHP?

Wie generiere ich gültige v4-UUIDs in PHP?

Patricia Arquette
Freigeben: 2024-12-18 09:19:14
Original
538 Leute haben es durchsucht

How to Generate Valid v4 UUIDs in PHP?

Gültige v4-UUIDs in PHP generieren

Das richtige Format für die Generierung gültiger v4-UUIDs in PHP zu bestimmen, kann eine Herausforderung sein. Eine UUID (Universally Unique Identifier) ​​muss einem bestimmten Muster entsprechen: „xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx“, wobei „y“ entweder eine 8, 9, A oder B darstellt.

Bestehende Lösung und Einschränkungen

Ein Lösungsversuch besteht darin, die UUID in Komponenten zu zerlegen und für jede eine Zufallszahlengenerierung zu verwenden Abschnitt. Der „y“-Wert wird jedoch nicht richtig eingestellt.

Korrektur der Funktion

Um dieses Problem zu beheben, müssen wir bestimmte Bitmanipulationen an den generierten Daten vornehmen . Gemäß RFC 4122 – Abschnitt 4.4 müssen die folgenden Bits geändert werden:

  • time_hi_and_version (Bits 4–7 des 7. Oktetts)
  • clock_seq_hi_and_reserved (Bits 6 und 7 des 9 Oktett)

Aktualisierte Funktion

Hier ist die aktualisierte PHP-Funktion, die gültige v4-UUIDs generiert:

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));
}
Nach dem Login kopieren

Zufällige Generierung Daten

Um ausreichend zufällige Daten zu generieren, wird empfohlen, beides zu verwenden openssl_random_pseudo_bytes() oder random_bytes() (für PHP 7 und höher). Für ältere PHP-Versionen kann openssl_random_pseudo_bytes() verwendet werden.

Das obige ist der detaillierte Inhalt vonWie generiere ich gültige v4-UUIDs in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage