Я ищу такой подход, как mt_rand
для генерации случайного значения, но между двумя буквенно-цифровыми значениями вместо целых чисел.
Например, rand(g3j3j4k5, z9kDDkks8f8d)
.
Я попытался преобразовать алфавитно-цифровые значения в целые числа с помощью base_convert
. Кроме того, это как-то чрезмерно, иногда целое число более 15 цифр и, следовательно, не работает в функциях PHP rand.
ПРИМЕЧАНИЕ. Речь идет не о создании случайной строки с заданной длиной. Значение должно быть между двумя заданными значениями, точно так же, как случайное число между целыми числами min и max.
Это должно сработать для вас:
Здесь я разбиваю $min
и $max
на массив с str_split()
и перебираю каждый символ обоих массивов с помощью array_map()
.
Там я получаю позицию символа с strpos()
и возвращаю случайный символ алфавита в этом конкретном диапазоне. Если min больше max, я просто возвращаю случайный символ из всего диапазона.
Код:
<?php
function alphanum_rand($min = "", $max = ""){
$chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$random = array_map(function($minC, $maxC)use($chars){
if(($minKey = strpos($chars, $minC)) < ($maxKey = strpos($chars, $maxC)))
return $chars[mt_rand($minKey, $maxKey)];
else
return $chars[mt_rand(0, strlen($chars))];
}, str_split($min), str_split($max));
return implode("", $random);
}
echo alphanum_rand("g3j3j4k5", "z9kDDkks8f8d");
?>
Вы можете попробовать простую функцию PHP и определить случайную строчную буквенную букву, а также включить специальные символы. Для цикла будет делать магию для u :)
function RandomString($size)
{
$chars = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
$string = array();
$alphaLength = strlen($chars) - 1;
for ($i = 0; $i < $size; $i++) {
$n = rand(0, $alphaLength);
$string[] = $chars[$n];
}
return implode($string);
}
и просто назовите его нужным вам размером.
<?php
echo RandomString(5); // Length of strings
?>