Random\Randomizer::getBytesFromString
(PHP 8 >= 8.3.0)
Get random bytes from a source string
Description
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.
Parameters
stringThe String from which the returned bytes are selected.
lengthThe length of the random String that should be returned in bytes; must be
1or greater.
Return Values
A String containing the requested number of random bytes taken from the input string.
Errors/Exceptions
- If
stringis empty, aValueErrorwill be thrown. - If the value of
lengthis less than1, aValueErrorwill be thrown.
Examples
Random\Randomizer::getBytesFromString example
<?php
$randomizer = new \Random\Randomizer();
printf(
"%s.example.com",
$randomizer->getBytesFromString('abcdefghijklmnopqrstuvwxyz0123456789', 16)
);
?>The above example will output something similar to:
3zsw04eiubcf82jd.example.comGenerate 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));
?>The above example will output something similar to:
11551-80418-27047-42075Select from a string with a non-uniform distribution
<?php
$randomizer = new \Random\Randomizer();
echo $randomizer->getBytesFromString('aaaaabcdef', 20);
?>The above example will output something similar to:
fddacbeaaeaaacaaaacaSee Also
Random\Randomizer::getBytes