Генерация уникальной случайной строки определенной длины и ограничений в PHP?
У меня есть необходимость генерировать случайную буквенно-цифровую строку из 8 символов. Так должно выглядеть b53m1isM
например. И верхний и нижний регистр, буквы и цифры.
У меня уже есть цикл, который выполняется восемь раз, и я хочу соединить строку с новым случайным символом в каждой итерации.
Вот цикл:
$i = 0;
while($i < 8)
{
$randPass = $randPass + //random char
$i = $i + 1;
}
Любая помощь?
2 ответа
Решение
function getRandomString($length = 8) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= $characters[mt_rand(0, strlen($characters) - 1)];
}
return $string;
}
function randr($j = 8){
$string = "";
for($i=0; $i < $j; $i++){
$x = mt_rand(0, 2);
switch($x){
case 0: $string.= chr(mt_rand(97,122));break;
case 1: $string.= chr(mt_rand(65,90));break;
case 2: $string.= chr(mt_rand(48,57));break;
}
}
return $string;
}
echo randr(); // b53m1isM
$permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
// Output: m-swm3AP8X50VG4jCi.jpg
echo 'm-'.substr(str_shuffle($permitted_chars), 0, 16).'.jpg';