(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