J'ai donc fait quelques recherches et je suis en train d'essayer de reconstituer une fonction qui génère un valide v4 UUID en PHP. C'est le plus proche que j'ai pu venir. Mes connaissances en hexadécimal, décimal, binaire, PHP opérateurs au niveau du bit et l'aime, c'est à peu près impossible. Cette fonction génère un valide v4 UUID jusqu'à une zone. Un v4 UUID doit être sous la forme de:
xxxxxxxx-xxxx-4xxx-oxxx xxxxxxxxxxxx
où y est de 8, 9, A ou B. C'est là que les fonctions échoue car il ne veut pas adhérer à cela.
J'espérais que quelqu'un avec plus de connaissances que moi dans ce domaine pourrait me prêter un coup de main et m'aider à corriger cette fonction de sorte qu'il n'adhérer à cette règle.
La fonction est la suivante:
<?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;
}
?>
Grâce à quelqu'un qui peut m'aider.