(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