(PHP 8 >= 8.3.0)
Random\Randomizer::getBytesFromString β Get random bytes from a source 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.
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