Random\Randomizer::getBytesFromString

(PHP 8 >= 8.3.0)

Random\Randomizer::getBytesFromStringGet random bytes from a source string

Описание

public 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.

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

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.

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

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

Ошибки

Примеры

Пример #1 Random\Randomizer::getBytesFromString() example

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

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

Результатом выполнения данного примера будет что-то подобное:

3zsw04eiubcf82jd.example.com

Пример #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));
?>

Результатом выполнения данного примера будет что-то подобное:

11551-80418-27047-42075

Пример #3 Select from a string with a non-uniform distribution

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

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

Результатом выполнения данного примера будет что-то подобное:

fddacbeaaeaaacaaaaca

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