在 PHP 中生成有效的 v4 UUID
确定在 PHP 中生成有效 v4 UUID 的正确格式可能具有挑战性。 UUID(通用唯一标识符)必须遵循特定模式:“xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx”,其中“y”代表 8、9、A 或 B。
现有解决方案和限制
一种尝试的解决方案是将 UUID 分解为多个组件并使用随机数每个部分的一代。但是,它无法正确设置“y”值。
纠正函数
要纠正此问题,我们需要对生成的数据进行特定的位操作。根据 RFC 4122 - 第 4.4 节,以下位需要修改:
更新的函数
这是生成有效的 v4 UUID 的更新的 PHP 函数:
function uuidv4() { $data = random_bytes(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)); }
生成随机数数据
生成足够的随机数数据,建议使用 openssl_random_pseudo_bytes() 或 random_bytes() (适用于 PHP 7 及更高版本)。对于较旧的 PHP 版本,可以使用 openssl_random_pseudo_bytes()。
以上是如何在 PHP 中生成有效的 v4 UUID?的详细内容。更多信息请关注PHP中文网其他相关文章!