发布于2026-07-23 阅读(0)
扫一扫,手机访问
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
// 生成10位随机字符串
echo generateRandomString(10);
这套代码简洁直接,适合大部分非安全性要求极高的业务。不过`rand()`底层使用的是较简单的线性同余算法,如果生成量不大,倒是没什么问题。
function generateSecureRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[random_int(0, $charactersLength - 1)];
}
return $randomString;
}
// 生成10位随机字符串
echo generateSecureRandomString(10);
和第一种方法唯一的差异在抽取函数上,但这一个变化就足以让输出的随机字符串具备更强的不可预测性。
function generateCryptoRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$bytes = openssl_random_pseudo_bytes($length);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[ord($bytes[$i]) % $charactersLength];
}
return $randomString;
}
// 生成10位随机字符串
echo generateCryptoRandomString(10);
注意这一种在映射时,`ord($bytes[$i]) % $charactersLength` 会导致一定的概率偏差(因为模运算不是完全均匀的),但对于常见业务来说问题不大。若追求极致均匀,可以用`random_int`再映射一次。
function generateRandomNumbers($length = 10) {
$numbers = '0123456789';
$randomNumbers = '';
for ($i = 0; $i < $length; $i++) {
$randomNumbers .= $numbers[rand(0, 9)];
}
return $randomNumbers;
}
// 生成10位随机数字
echo generateRandomNumbers(10);
function generateMTRandomNumbers($length = 10) {
$numbers = '0123456789';
$randomNumbers = '';
for ($i = 0; $i < $length; $i++) {
$randomNumbers .= $numbers[mt_rand(0, 9)];
}
return $randomNumbers;
}
// 生成10位随机数字
echo generateMTRandomNumbers(10);
function generatePaddedRandomNumbers($length = 10) {
$min = pow(10, $length - 1);
$max = pow(10, $length) - 1;
return str_pad(mt_rand($min, $max), $length, '0', STR_PAD_LEFT);
}
// 生成10位随机数字
echo generatePaddedRandomNumbers(10);
需要注意,`pow`返回的是浮点型,当位数较大时会有精度问题。如果想生成超过15位的纯数字,建议还是用前两种循环方案。
// 生成6位数字验证码 $verificationCode = generateRandomNumbers(6); // 生成8位字母数字混合验证码 $mixedCode = generateSecureRandomString(8);
// 生成12位包含大小写字母和数字的临时密码 $tempPassword = generateCryptoRandomString(12);
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8