PHP GUID 生成
GUID 介绍
GUID:Globally Unique Identifier
(全球唯一标识符) 也称作 UUID (Universally Unique IDentifier
) 。
GUID 是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如如注册表项、类及接口标识、数据库、系统目录等对象。
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个32位十六进制数。例如:A9550B2E-A0D5-4206-B045-6596D6DEE881 即为有效的 GUID 值。
GUID性质
- GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
- 世界上的任何两台计算机都不会生成重复的 GUID 值。
- 需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
- GUID的长度固定,并且相对而言较短小,非常适合于排序,标识和存储。
生成GUID
1. 长度36位包含 -
/**
* 生成GUID
* 36位包含'-'
*/
function create_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));
}
2. 长度32位不包含
/**
* 生成GUID
* 1、去掉中间的'-',长度有36变为32
* 2、字母由大写改为小写
*/
function string_make_guid() {
if (function_exists('com_create_guid') === true) {
return strtolower(str_replace('-', '', 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));
}