(PHP 8 >= 8.3.0)
Random\Randomizer::getBytesFromString — Get random bytes from a source 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
.
string
is empty,
a ValueError will be thrown.
length
is less than 1
,
a ValueError will be thrown.
Random\Randomizer::$engine
.
Пример #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