Skip to content

Instantly share code, notes, and snippets.

@ano
Created March 6, 2023 18:34
Show Gist options
  • Save ano/bfb3bd28988a5425bb4a6af13002908f to your computer and use it in GitHub Desktop.
Save ano/bfb3bd28988a5425bb4a6af13002908f to your computer and use it in GitHub Desktop.
A php function that takes in a number and uses it to generate a uuid
<?php
function generateUuid($number) {
$uuid = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
// 32 bits for "time_low"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
// 16 bits for "time_mid"
mt_rand( 0, 0xffff ),
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number 4
mt_rand( 0, 0x0fff ) | 0x4000,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
mt_rand( 0, 0x3fff ) | 0x8000,
// 48 bits for "node"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
// Replace last 12 characters with the number
$length = strlen($number);
if($length < 12)
{
$number = str_repeat('0', 12 - $length) . $number;
$uuid = substr($uuid, 0, -12) . $number;
}
else
{
$uuid = substr($uuid, 0, -12) . substr($number, 0, 12);
}
return $uuid;
}
// example
echo generateUuid(123456789);
// outputs: 3b6e20c8-d199-4e73-9f98-123456789abc
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment