- file_get_contents: documentation ( source)
- bin2hex: documentation ( source)
- chr: documentation ( source)
- vsprintf: documentation ( source)
- str_split: documentation ( source)
- ord: documentation ( source)
<?php
function guidv4() {
$data = file_get_contents('/dev/urandom', false, null, 0, 16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
echo guidv4();