PHP генератор случайных строк - PullRequest
746 голосов
/ 05 декабря 2010

Я пытаюсь создать рандомизированную строку в PHP, и я не получаю абсолютно ничего с этим:

<?php
function RandomString()
{
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randstring = '';
    for ($i = 0; $i < 10; $i++) {
        $randstring = $characters[rand(0, strlen($characters))];
    }
    return $randstring;
}
RandomString();
echo $randstring;

Что я делаю не так?

Ответы [ 53 ]

0 голосов
/ 30 ноября 2015

Вам нравится получать его одной строкой?

Попробуйте,

$str = substr(str_shuffle(str_repeat("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 5)), 0, $length);
0 голосов
/ 03 июня 2019

В вашем коде есть 3 ошибки:

  1. $ randstring ни к чему не привязан (только внутри функции, которая находится вне области видимости).
  2. RandomString возвращает толькопоследний случайный характер.Замена = на .=.
  3. Rand не создает криптографически безопасных псевдослучайных чисел.Вместо этого используйте random_int.

См. Ниже:

<?php
    function RandomString()
    {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $randstring = '';
        for ($i = 0; $i < 10; $i++) {
            $randstring .= $characters[random_int(0, strlen($characters))];
        }
        return $randstring;
    }
    $randstring = RandomString();
    echo $randstring;
0 голосов
/ 23 сентября 2014
$t = array_merge(range('0', '9'), range('a', 'z'), range('A', 'Z'));
echo join('', array_map(function() use($t) { return $t[array_rand($t)]; }, range(1, 15)));

или однострочник

echo join('', array_map(function() { return substr('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', rand(0, 61), 1); }, range(1, 15)));
...