В соответствии с этим:
Генерация уникальной случайной строки определенной длины и ограничений в PHP?
Я хочу, чтобы это развивалось:
function getRandomString($length = 8) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= $characters[mt_rand(0, strlen($characters) - 1)];
}
return $string;
}
Как я могу сделать случайные 8 символов, но с 5 цифрами?
Благодарю.
function getRandomString ($ length = 8) {
$ characters = str_split (‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’);
for ($i = 0; $i < $length; $i++) {
$rand = '';
foreach (array_rand($characters, 5) as $k) $rand .= $characters[$k];
$string[$i] = $rand;
}
return $string;
}
Ваша измененная функция:
function getRandomString( $length = 8 )
{
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$digits = '0123456789';
$string = '';
for( $i = 0; $i < 5; $i++ )
{
$string .= $digits[ mt_rand( 0, strlen( $digits ) - 1 ) ];
}
for( $i = 5; $i < $length; $i++ )
{
$string .= $characters[ mt_rand( 0, strlen( $characters ) - 1 ) ];
}
$array = str_split( $string );
shuffle( $array );
return implode( '', $array );
}
Исходя из вашей функции, мы делим $characters
в $characters
а также $digits
Затем мы добавляем к пустой строке 5 случайных цифр и оставшиеся случайные символы.
В конце мы перетасовываем полученную строку и возвращаем ее.
function getRandomString( $length = 8 )
{
$characters = str_split( 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' );
$digits = str_split( '0123456789' );
shuffle( $characters );
shuffle( $digits );
$retval = array_merge
(
array_slice( $digits, 0, 5 ),
array_slice( $characters, 0, $length-5 )
);
shuffle( $retval );
return implode( '', $retval );
}
Начнем непосредственно с массивов: $characters
а также $digits
затем перетасовываем их, извлекаем 5-значные элементы и оставшиеся элементы символов, объединяя их в $retval
массив.
В конце мы тасуем $retval
массив и вернуть его в виде строки.
Изменить: прецедент версия 3 цифры / 5 символов; актуальная версия: 5 цифр / 3 знака