The phunction PHP framework (http://sourceforge.net/projects/phunction/) uses the following function to generate valid version 4 UUIDs:
<?php
function GUID()
{
if (function_exists('com_create_guid') === true)
{
return trim(com_create_guid(), '{}');
}
return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}
?>
The output generated by the sprintf() and mt_rand() calls is identical to com_create_guid() results.
com_create_guid
(PHP 5)
com_create_guid — グローバルユニーク ID (GUID) を生成する
説明
string com_create_guid
( void
)
グローバルユニーク ID (GUID) を生成します。
GUID は DCE UUID と同様の方法で生成されますが、Microsoft の 規約により、GUID が中括弧で囲まれるという点が異なります。
返り値
GUID を文字列で返します。
参考
- PECL uuid 拡張モジュールの uuid_create()
Alix Axel ¶
2 years ago
Kristof_Polleunis at yahoo dot com ¶
8 years ago
A guid function that works in all php versions:
<?php
function guid(){
if (function_exists('com_create_guid')){
return com_create_guid();
}else{
mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
$charid = strtoupper(md5(uniqid(rand(), true)));
$hyphen = chr(45);// "-"
$uuid = chr(123)// "{"
.substr($charid, 0, 8).$hyphen
.substr($charid, 8, 4).$hyphen
.substr($charid,12, 4).$hyphen
.substr($charid,16, 4).$hyphen
.substr($charid,20,12)
.chr(125);// "}"
return $uuid;
}
}
echo guid();
?>
