'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'alnum' => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'numeric' => '0123456789', 'noZero' => '123456789', default => '', }; return substr(str_shuffle(str_repeat($pool, ceil($len / strlen($pool)))), 0, $len); case 'unique': case 'md5': return md5(uniqid(mt_rand())); case 'encrypt': case 'sha1': return sha1(uniqid(mt_rand(), true)); } return ''; } /** * 生成带随机前缀的唯一ID * @param int $length ID总长度 * @return string 唯一ID */ public static function generateRandomPrefixedId(int $length = 16): string { $length = min($length, 18); $prefixLength = 4; $timestamp = floor(microtime(true) * 1000); // 毫秒级时间戳 $randomPart = ''; // 生成随机前缀 for ($i = 0; $i < $prefixLength; $i++) { $randomPart .= random_int(0, 9); } // 计算剩余长度用于时间戳 $timestampLength = $length - $prefixLength; $timestampStr = (string) $timestamp; // 截取或补零时间戳部分 if (strlen($timestampStr) > $timestampLength) { $timestampStr = substr($timestampStr, -$timestampLength); } else { $timestampStr = str_pad($timestampStr, $timestampLength, '0', STR_PAD_LEFT); } return $randomPart . $timestampStr; } }