Сгенерировать случайную строку

1-ый способ: случайная строка

В PHP 8.3 появился метод Randomizer::getBytesFromString(), который позволяет генерировать случайную строку из указанных символов.

$availableChars = 'abcdefghijklmnopqrstuvwxyz0123456789@1#$%^&*';

$randomizer = new \Random\Randomizer();
$randomizer->getBytesFromString($availableChars, 16); // g0o39%jaol6zgep#
$randomizer->getBytesFromString($availableChars, 16); // supn%1ajys7y$%9e

Данная функция может пригодиться, когда надо, например, сгенерировать случайный пароль для пользователя.

Если используется PHP ниже версии «8.3», то можно создать свою функцию:

function getRandomString($count) {
    $availableChars = 'abcdefghijklmnopqrstuvwxyz0123456789@1#$%^&*';
    $charsLength = mb_strlen($availableChars);
    $randomString = '';
    for ($i = 0; $i < $count; $i++) {
        $randomString .= $availableChars[random_int(0, $charsLength - 1)];
    }
    
    return $randomString;
}

getRandomString(16); // oalm*uy3#1@872hy
getRandomString(16); ​​​​​​​// hpq7pdfnjgfk1%q*

Два способа выше не поддерживают Юникод, т.е. не работает с русскими символами или со смайликами.

2-ой способ: уникальная строка

Сгенерировать уникальную строку (которая точно не будет повторяться при повторной генерации), можно через функцию uniqid().

echo uniqid(); // 69624cbce8e64
echo uniqid(); // 69624cc5732fd

Строка гененрируется на основе текущего времени, поэтому она всегда уникальна.