揮発性のメモ2

最近知った知識を さも昔から知ってた風にメモ書きしていく

PHPで、UUIDv4 を作る

RRRRRRRR-RRRR-4RRR-rRRR-RRRRRRRRRRRR

r のところが 8,9,a,b になってればヨシ

<?
function uuid4(): string 
{
    $hex = bin2hex(random_bytes(16)); // 32文字の16進文字列を作る
    $hex[12] = '4';                   // 12文字目を 4 に
    $hex[16] = '89ab'[rand(0, 3)];    // 16文字目を 8,9,a,b のどれかに
    // いい感じに整形して返す
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split($hex, 4)); 
}

for($i=0; $i<5; $i++) echo uuid4()."\n";
75870eaa-a6ca-4dec-adf4-33045bfc2ab3
ae5e869b-9927-45fc-9085-e6ff889df5bd
8ccd1f6f-db39-42dc-9502-c5785e349f11
0adffcfc-1b3c-4876-a91e-8b00c6fc439b
09bace80-ff8f-465c-8b56-958372466a4d

やったぜ
ja.wikipedia.org