Получает случайные байты из исходной строки

# Random\Randomizer::getBytesFromString

(PHP 8 >= 8.3.0)

Random\Randomizer::getBytesFromString — Получает случайные байты из исходной строки

### Описание

public function Random\Randomizer::getBytesFromString(string `$string`, int `$length`): string

Генерирует из входной строки `string` строку, содержащую равномерно выбранные случайные байты заданной параметром `length` длины.

Вероятность выбора байта пропорциональна его доле во входной строке `string`. Если каждый байт встречается одинаковое количество раз, вероятность выбора каждого байта будет одинаковой.

### Список параметров

`string`

  Строка (string), из которой выбираются возвращаемые байты.

`length`

  Длина случайной строки (string) в байтах, которая должна быть возвращена; должна быть равна `1` или больше.

### Возвращаемые значения

Возвращает строку (string), содержащую запрошенное количество случайных байтов, взятых из входной строки `string`.

### Ошибки

- Если параметр `string` пуст, будет выброшено исключение ValueError.
- Если значение длины `length` меньше `1`, будет выброшено исключение ValueError.
- Любые Throwable, выбрасываемые методом Random\Engine::generate() базового `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

### Смотрите также

- Random\Randomizer::getBytes() - Получает случайные байты

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open