Get random bytes from a source string

# Random\Randomizer::getBytesFromString

(PHP 8 >= 8.3.0)

Random\Randomizer::getBytesFromString — Get random bytes from a source string

### Beschreibung

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

Generates a string containing uniformly selected random bytes from the input `string` with the requested `length`.

The chance for a byte to be selected is proportional to its share of the input `string`. If each byte occurs the same amount of times, each byte is equally likely to be selected.

### Parameter-Liste

`string`

  The String from which the returned bytes are selected.

`length`

  The length of the random String that should be returned in bytes; must be `1` or greater.

### Rückgabewerte

A String containing the requested number of random bytes taken from the input `string`.

### Fehler/Exceptions

- If `string` is empty, a ValueError will be thrown.
- If the value of `length` is less than `1`, a ValueError will be thrown.
- Alle Throwables, die von der Methode Random\Engine::generate() der zugrundeliegenden `Random\Randomizer::$engine` ausgelöst werden.

### Beispiele

Beispiel #1 Random\Randomizer::getBytesFromString() example

    <?php
    $randomizer = new \Random\Randomizer();

    printf(
        "%s.example.com",
        $randomizer->getBytesFromString('abcdefghijklmnopqrstuvwxyz0123456789', 16)
    );
    ?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

    3zsw04eiubcf82jd.example.com

Beispiel #2 Generate a random code for multi-factor authentication

    <?php
    // The Secure engine is the default, but we make it explicit, because
    // multi-factor codes are security sensitive.
    $randomizer = new \Random\Randomizer(new \Random\Engine\Secure());

    echo implode('-', str_split($randomizer->getBytesFromString('0123456789', 20), 5));
    ?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

    11551-80418-27047-42075

Beispiel #3 Select from a string with a non-uniform distribution

    <?php
    $randomizer = new \Random\Randomizer();

    echo $randomizer->getBytesFromString('aaaaabcdef', 20);
    ?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

    fddacbeaaeaaacaaaaca

### Siehe auch

- Random\Randomizer::getBytes() - Get random bytes

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