当前位置:首页 > PHP

php uniqid js 实现

2026-02-15 12:01:46PHP

PHP uniqid 的 JavaScript 实现

PHP 的 uniqid 函数生成一个基于当前时间微秒级的唯一 ID。在 JavaScript 中可以通过类似逻辑实现类似功能。

php uniqid js 实现

方法一:基于时间戳和随机数

使用 Date.now() 获取时间戳,结合 Math.random() 生成随机数,模拟 uniqid 的行为。

php uniqid js 实现

function uniqid(prefix = '', moreEntropy = false) {
  const time = Date.now();
  const random = Math.floor(Math.random() * 1000000000);
  let id = prefix + time.toString(16) + '.' + random.toString(16);

  if (moreEntropy) {
    id += (Math.random() * 10).toFixed(8).toString();
  }

  return id;
}

方法二:使用性能计时器

如果需要更高精度,可以使用 performance.now() 替代 Date.now()

function uniqid(prefix = '', moreEntropy = false) {
  const time = performance.now();
  const random = Math.floor(Math.random() * 1000000000);
  let id = prefix + time.toString(16).replace('.', '') + '.' + random.toString(16);

  if (moreEntropy) {
    id += (Math.random() * 10).toFixed(8).toString();
  }

  return id;
}

方法三:模拟 PHP 的完整行为

PHP 的 uniqid 还支持 more_entropy 参数,以下代码更接近 PHP 的实现逻辑。

function uniqid(prefix = '', moreEntropy = false) {
  const sec = Math.floor(Date.now() / 1000);
  const usec = Math.floor((performance.now() % 1000) * 1000);
  const random = Math.floor(Math.random() * 0x1000000);

  let id = prefix + 
           sec.toString(16) + 
           usec.toString(16).padStart(4, '0') + 
           random.toString(16).padStart(6, '0');

  if (moreEntropy) {
    id += '.' + Math.floor(Math.random() * 0x100000000).toString(16);
  }

  return id;
}

使用示例

console.log(uniqid());          // 类似 "606f7c9b.5a7b3d"
console.log(uniqid('prefix_')); // 类似 "prefix_606f7c9b.5a7b3d"
console.log(uniqid('', true));  // 类似 "606f7c9b.5a7b3d.3acfe4a2"

注意事项

  • PHP 的 uniqid 是基于微秒级时间戳,JavaScript 的 Date.now() 只能达到毫秒级精度。
  • 如果需要更高的唯一性,可以结合 crypto.getRandomValues() 生成更强的随机数。
  • 以上实现主要模拟 PHP 的行为,实际项目中可能需要根据具体需求调整。

标签: phpuniqid
分享给朋友:

相关文章

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新版…

php 实现面包屑导航

php 实现面包屑导航

实现面包屑导航的方法 面包屑导航(Breadcrumb Navigation)是一种常见的网站导航方式,用于显示用户当前页面的路径。以下是几种在 PHP 中实现面包屑导航的方法。 基于 URL 路径…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…

php实现图片上传预览

php实现图片上传预览

图片上传预览的实现方法 在PHP中实现图片上传预览功能,通常需要结合前端JavaScript和后端PHP代码。以下是具体的实现步骤: 前端HTML和JavaScript部分 创建包含文件输入和预览…

php 实现下载apk

php 实现下载apk

使用 PHP 实现 APK 文件下载 通过 PHP 实现 APK 文件下载的核心是设置正确的 HTTP 头信息,并输出文件内容。以下是一个完整的实现方法。 设置 HTTP 头信息 确保客户端正确识别…