Jadi saya telah melakukan beberapa penggalian di sekitar dan saya telah mencoba untuk mengumpulkan fungsi yang menghasilkan UUID v4 yang valid dalam PHP. Ini adalah yang terdekat yang bisa saya datangi. Pengetahuan saya tentang hex, desimal, biner, operator bitwise PHP dan sejenisnya hampir tidak ada. Fungsi ini menghasilkan UUID v4 yang valid hingga satu area. UUID v4 harus dalam bentuk:
xxxxxxxx- xxxx- 4 xxx- y xxx-xxxxxxxxxxxx
di mana y adalah 8, 9, A, atau B. Di sinilah fungsi gagal karena tidak mematuhi itu.
Saya berharap seseorang dengan pengetahuan lebih dari saya di bidang ini dapat membantu saya dan membantu saya memperbaiki fungsi ini sehingga mematuhi aturan itu.
Fungsinya sebagai berikut:
<?php
function gen_uuid() {
$uuid = array(
'time_low' => 0,
'time_mid' => 0,
'time_hi' => 0,
'clock_seq_hi' => 0,
'clock_seq_low' => 0,
'node' => array()
);
$uuid['time_low'] = mt_rand(0, 0xffff) + (mt_rand(0, 0xffff) << 16);
$uuid['time_mid'] = mt_rand(0, 0xffff);
$uuid['time_hi'] = (4 << 12) | (mt_rand(0, 0x1000));
$uuid['clock_seq_hi'] = (1 << 7) | (mt_rand(0, 128));
$uuid['clock_seq_low'] = mt_rand(0, 255);
for ($i = 0; $i < 6; $i++) {
$uuid['node'][$i] = mt_rand(0, 255);
}
$uuid = sprintf('%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x',
$uuid['time_low'],
$uuid['time_mid'],
$uuid['time_hi'],
$uuid['clock_seq_hi'],
$uuid['clock_seq_low'],
$uuid['node'][0],
$uuid['node'][1],
$uuid['node'][2],
$uuid['node'][3],
$uuid['node'][4],
$uuid['node'][5]
);
return $uuid;
}
?>
Terima kasih kepada siapa pun yang dapat membantu saya.
$newId = exec('uuidgen -r');