ホームページ >バックエンド開発 >PHPチュートリアル >PHP で有効な v4 UUID を生成するにはどうすればよいですか?

PHP で有効な v4 UUID を生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-18 09:19:14538ブラウズ

How to Generate Valid v4 UUIDs in PHP?

PHP での有効な v4 UUID の生成

PHP で有効な v4 UUID を生成するための正しい形式を決定するのは困難な場合があります。 UUID (Universally Unique Identifier) は特定のパターン「xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx」に従う必要があります。ここで、「y」は 8、9、A、または B のいずれかを表します。

既存の解決策と制限

試みられた解決策の 1 つは、UUID をコンポーネントに分割し、乱数を使用することです。各セクションの世代。ただし、「y」値を正しく設定できません。

関数の修正

この問題を修正するには、生成されたデータに特定のビット操作を行う必要があります。 。 RFC 4122 - セクション 4.4 によると、次のビットを変更する必要があります:

  • time_hi_and_version (7 番目のオクテットのビット 4 ~ 7)
  • Clock_seq_hi_and_reserved (9 番目のオクテットのビット 6 および 7)オクテット)

更新された関数

有効な v4 UUID を生成する更新された PHP 関数は次のとおりです。

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));
}

ランダムの生成データ

へ十分にランダムなデータを生成するには、openssl_random_pseudo_bytes() または random_bytes() (PHP 7 以降の場合) のいずれかを使用することをお勧めします。古い PHP バージョンの場合は、openssl_random_pseudo_bytes() を使用できます。

以上がPHP で有効な v4 UUID を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。