(PHP 8 >= 8.3.0)
Random\Randomizer::getBytesFromString — 从源字符串获取随机字节
生成一个字符串,其中包含从输入 string
中均匀选择的随机字节,长度为 length
。
字节被选择的概率与其在输入 string
中所占份额成正比。如果每个字节出现的次数相同,那么每个字节被选择的概率都相同。
一个 string,包含从输入 string
中获取的指定数量的随机字节。
string
为空,将抛出 ValueError。
length
的值小于 1
,将抛出 ValueError。
Random\Randomizer::$engine
的 Random\Engine::generate() 方法抛出的任何 Throwable。
示例 #1 Random\Randomizer::getBytesFromString() 示例
<?php
$randomizer = new \Random\Randomizer();
printf(
"%s.example.com",
$randomizer->getBytesFromString('abcdefghijklmnopqrstuvwxyz0123456789', 16)
);
?>
上面的示例将输出类似于以下内容
3zsw04eiubcf82jd.example.com
示例 #2 生成用于多因素身份验证的随机代码
<?php
// Secure 引擎是默认引擎,但我们明确指定,因为
// 多因素代码对安全至关重要。
$randomizer = new \Random\Randomizer(new \Random\Engine\Secure());
echo implode('-', str_split($randomizer->getBytesFromString('0123456789', 20), 5));
?>
上面的示例将输出类似于以下内容
11551-80418-27047-42075
示例 #3 从具有非均匀分布的字符串中选择
<?php
$randomizer = new \Random\Randomizer();
echo $randomizer->getBytesFromString('aaaaabcdef', 20);
?>
上面的示例将输出类似于以下内容
fddacbeaaeaaacaaaaca