首页 > 后端开发 > php教程 > 如何在 PHP 中生成有效的 v4 UUID?

如何在 PHP 中生成有效的 v4 UUID?

Patricia Arquette
发布: 2024-12-18 09:19:14
原创
534 人浏览过

How to Generate Valid v4 UUIDs in PHP?

在 PHP 中生成有效的 v4 UUID

确定在 PHP 中生成有效 v4 UUID 的正确格式可能具有挑战性。 UUID(通用唯一标识符)必须遵循特定模式:“xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx”,其中“y”代表 8、9、A 或 B。

现有解决方案和限制

一种尝试的解决方案是将 UUID 分解为多个组件并使用随机数每个部分的一代。但是,它无法正确设置“y”值。

纠正函数

要纠正此问题,我们需要对生成的数据进行特定的位操作。根据 RFC 4122 - 第 4.4 节,以下位需要修改:

  • time_hi_and_version(第 7 个八位位组的位 4-7)
  • clock_seq_hi_and_reserved(第 9 个八位位组的位 6 和 7)八位组)

更新的函数

这是生成有效的 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板