(PHP 8 >= 8.3.0)
Random\Randomizer::getBytesFromString — Получает случайные байты из исходной строки
Генерирует из входной строки string строку,
содержащую равномерно выбранные случайные байты заданной параметром length длины.
Вероятность выбора байта пропорциональна его доле во входной
строке string. Если каждый байт встречается
одинаковое количество раз, вероятность выбора каждого байта будет одинаковой.
Возвращает строку (string), содержащую запрошенное количество случайных байтов,
взятых из входной строки string.
string пуст,
будет выброшено исключение ValueError.
length меньше 1,
будет выброшено исключение ValueError.
Random\Randomizer::$engine.
Пример #1 Пример использования метода Random\Randomizer::getBytesFromString()
<?php
$randomizer = new \Random\Randomizer();
printf(
"%s.example.com",
$randomizer->getBytesFromString('abcdefghijklmnopqrstuvwxyz0123456789', 16)
);
?>Вывод приведённого примера будет похож на:
3zsw04eiubcf82jd.example.com
Пример #2 Пример генерации случайного кода для многофакторной аутентификации
<?php
// Движок Secure установлен по умолчанию, но укажем его явно, потому что
// многофакторные коды чувствительны к безопасности.
$randomizer = new \Random\Randomizer(new \Random\Engine\Secure());
echo implode('-', str_split($randomizer->getBytesFromString('0123456789', 20), 5));
?>Вывод приведённого примера будет похож на:
11551-80418-27047-42075
Пример #3 Пример выбора из строки с неравномерным распределением
<?php
$randomizer = new \Random\Randomizer();
echo $randomizer->getBytesFromString('aaaaabcdef', 20);
?>Вывод приведённого примера будет похож на:
fddacbeaaeaaacaaaaca