PHP 8.3 新特性 - getBytesFromString 方法
hi,我是温新,一名 PHPer
PHP 8.3 中,Random
扩展增加了一个新方法:\Random\Randomizer::getBytesFromString
。该方法用于从字符串中生成随机字节
。
TIP
该方法是在字节级别工作。它不能有效地对多字节字符,如 Emojis, CJK characters, and Eastern/Indo 。
public Random\Randomizer::getBytesFromString(string $string, int $length): string
参数解释
-
$string
:要从中生成随机字节的字符串; -
$length
:要生成的随机字节序列的长度。
返回值
- 返回一个由指定长度的随机字节组成的字符串。
getBytesFromString 案例
<?php
use Random\Randomizer;
$randomizer = new Randomizer();
echo $randomizer->getBytesFromString("Hello, World!", 3); // o,l
在这个案例中,创建了一个 Randomizer 对象,并使用 getBytesFromString 方法从字符串 "Hello, World!" 中随机选择 3 个字节。
<?php
$randomizer = new Random\Randomizer();
$string = '0123456789';
echo $randomizer->getBytesFromString($string, 2) . PHP_EOL;
echo $randomizer->getBytesFromString($string, 2) . PHP_EOL;
echo $randomizer->getBytesFromString($string, 5) . PHP_EOL;
echo $randomizer->getBytesFromString($string, 5) . PHP_EOL;
echo $randomizer->getBytesFromString($string, 8) . PHP_EOL;
echo $randomizer->getBytesFromString($string, 8) . PHP_EOL;
输出结果
26
15
88678
92872
26835487
40013106
使用 getBytesFromString 时需要注意:
-
$string
参数中允许有重复字符。多次出现会增加特定字符出现在返回的随机值中的概率。 - 如果
$string
参数为空,则抛出\ValueError
异常。 - 如果
$length <= 0
,则抛出\ValueError
异常。 - 如果基础引擎无法生成请求长度的随机字节序列,则引发
\Random\BrokenRandomEngineError
异常
请登录后再评论