首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 生成 UUID 通用函數:跨平台實現 Version 4 隨機標識符

     編輯:PHP 綜合知識

什麼是 UUID?

UUID(Universally Unique Identifier)是一種無需中央協調即可在任意計算機生成的唯一標識符。其值域極大,號稱給地球上每粒沙子分配一個也不會重複。UUID 共有 5 個版本,Version 4 基於隨機數生成,實現最簡單,適用於大多數業務場景。

PHP 內建函數的跨平台缺失

Windows 版 PHP 提供 com_create_guid()(調用 COM 的 CreateGuid),但 Linux 環境缺少對應擴展。為了代碼跨平台復用,需自行實現同名函數。

自定義 com_create_guid 實現(Version 4)

if (!function_exists('com_create_guid')) {
    function com_create_guid() {
        return sprintf(
            '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
            mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff),
            mt_rand(0, 0x0fff) | 0x4000,  // 版本位固定為 4
            mt_rand(0, 0x3fff) | 0x8000,  // 變體位固定為 10xx
            mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
        );
    }
}

關鍵點:

  • 使用 mt_rand 生成高質量隨機數。
  • 第 3 組高 4 位設為 0100(Version 4)。
  • 第 4 組高 2 位設為 10(RFC 4122 變體)。
  • 其餘位全隨機,碰撞概率極低。

使用說明

直接調用 com_create_guid() 即可獲得標準格式 UUID 字符串,例如 a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d。無需額外擴展,Windows/Linux 均可運行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved