Yani etrafta kazma bazı yapıyor oldum ve ben PHP geçerli v4 UUID üreten bir işlevi bir araya getirmek için çalışıyorum. Bu benim gelmek mümkün oldum yakın. Onaltılık, onluk, ikili, PHP'nin bitsel operatörleri ve benzeri bilgim neredeyse olmayan. Bu fonksiyon bir alana kadar geçerli bir v4 UUID yukarı oluşturur. A v4 UUID şeklinde olması gerekir:
xxxxxxxx-xxxx-4 xxx-y xxx-xxxxxxxxxxxx
y 8, 9, A, B ya da bu yapışmayan olarak işlev başarısız budur olduğu.
Ben bu alanda benden daha fazla bilgiye sahip birisi bana bir el ödünç ve bu kurala uymak bu yüzden bana bu fonksiyonu düzeltmek yardımcı olabilir umuyordum.
Aşağıdaki gibi fonksiyon:
<?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;
}
?>
Bana yardımcı olabilecek herkese teşekkürler.