Login dark
title: php生成随机字符串的10种方法
author: Love02xp
date: 2020-08-09 13:04:17
category: [编程代码]
tags: [PHP,代码,学习]
  1. 使用 str_shuffle 和 substr 函数生成随机字符串
<?php
$rand_str = str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-_=+[]{};:",./<>?');
$rand_str = substr($rand_str, 0, 10);
echo $rand_str; // 输出类似:5P^y#h7O6!
?>
  1. 使用 md5 和 uniqid 函数生成随机字符串
<?php
$rand_str = md5(uniqid(mt_rand(), true));
echo $rand_str; // 输出类似:03d18c43078f5bf965fc84fd8d7928d5
?>
  1. 使用 openssl_random_pseudo_bytes 和 bin2hex 函数生成随机字符串
<?php
$rand_str = bin2hex(openssl_random_pseudo_bytes(5));
echo $rand_str; // 输出类似:05a3e7025b
?>
  1. 使用 random_bytes 和 base64_encode 函数生成随机字符串
<?php
$rand_str = base64_encode(random_bytes(10));
echo $rand_str; // 输出类似:VqdlxpNfi2mmpjRQSA==
?>
  1. 使用 range 函数、array_merge 函数和 shuffle 函数生成随机字符串
<?php
$numbers = range(0, 9);
$letters = range('a', 'z');
$special_chars = str_split('!@#$%^&*()_+-=[]{};:\'",.<>/?|\\');
$chars = array_merge($numbers, $letters, $special_chars);
shuffle($chars);
$rand_str = implode('', array_slice($chars, 0, 10));
echo $rand_str; // 输出类似:m+Rq]g7{5t
?>
  1. 使用 mt_rand 函数、chr 函数和 join 函数生成随机字符串
<?php
$rand_str = join('', array_map(function ($n) {
    return chr($n);
}, [
    mt_rand(48, 57), // 数字0-9
    mt_rand(65, 90), // 大写字母A-Z
    mt_rand(97, 122), // 小写字母a-z
    mt_rand(33, 47), // 特殊符号
]));
echo $rand_str; // 输出类似:tWzH!j]WlA
?>
  1. 使用 array_rand 函数和 str_shuffle 函数生成随机字符串
<?php
$chars = str_split('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-_=+[]{};:",./<>?');
shuffle($chars);
$rand_keys = array_rand($chars, 10);
$rand_str = '';
foreach ($rand_keys as $key) {
    $rand_str .= $chars[$key];
}
echo $rand_str; // 输出类似:C?FuEf(1~y
?>
  1. 使用 chr 函数和 array_reduce 函数生成随机字符串
<?php
$rand_str = array_reduce(range(1, 10), function ($str) {
    return $str . chr(mt_rand(33, 126));
});
echo $rand_str; // 输出类似:wv&Y8S%T}*
?>
  1. 使用 str_split 函数、array_map 函数和 join 函数生成随机字符串
<?php
$chars = str_split('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-_=+[]{};:",./<>?');
$rand_str = join('', array_map(function () use ($chars) {
    return $chars[mt_rand(0, count($chars) - 1)];
}, range(1, 10)));
echo $rand_str; // 输出类似:2#p7MaT.6X
?>
  1. 使用 array_rand 函数和 join 函数生成随机字符串
<?php
$chars = str_split('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-_=+[]{};:",./<>?');
$rand_keys = array_rand($chars, 10);
$rand_str = join('', array_map(function ($key) use ($chars) {
    return $chars[$key];
}, $rand_keys));
echo $rand_str; // 输出类似:h5DP?W=2]v
?>