PHP Conference Japan 2024

Random\Randomizer::getBytesFromString

(PHP 8 >= 8.3.0)

Random\Randomizer::getBytesFromString从源字符串获取随机字节

描述

public Random\Randomizer::getBytesFromString(string $string, int $length): string

从输入string中生成一个包含均匀选择的随机字节的字符串,并具有请求的length

选择一个字节的概率与其在输入string中的份额成正比。如果每个字节出现的次数相同,则每个字节被选择的可能性相同。

参数

string

返回的字节从中选择的string

length

应以字节为单位返回的随机string的长度;必须为1或更大。

返回值

一个string,包含从输入string中获取的请求数量的随机字节。

错误/异常

示例

示例 #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

参见

添加注释

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top