PHP Conference Japan 2024

Random\Randomizer::shuffleBytes

(PHP 8 >= 8.2.0)

Random\Randomizer::shuffleBytes获取字符串的字节级排列

描述

public Random\Randomizer::shuffleBytes(string $bytes): string

返回输入$bytes的均匀选择的排列。

输入$bytes的每个可能的排列都同样有可能被返回。

参数

bytes

其字节将被混洗的string

输入string不会被修改。

返回值

$bytes字节的排列。

错误/异常

范例

示例 #1 Random\Randomizer::shuffleBytes() 示例

<?php
$r
= new \Random\Randomizer();

// 打乱字符串中的字节:
echo "«", $r->shuffleBytes("PHP is great!"), "»\n";
?>

以上示例将输出类似以下内容

« ga rHs!PPiet»

示例 #2 字节级混洗会破坏 Unicode 字符

<?php
$r
= new \Random\Randomizer();

$unicode = "🍎, 🥝, 🍌, 🍑, 🍇";
$shuffled = $r->shuffleBytes( $unicode );

// 非 ASCII 字符的字节级混洗会破坏它们,
// 导致无效序列(由 Unicode
// 替换字符指示)甚至完全不同的字符
// 出现在输出中。
echo "Original: ", $unicode, "\n";
echo
"Shuffled: «", $shuffled, "»\n";
echo
"Shuffled Bytes: ", bin2hex($shuffled), "\n";
?>

以上示例将输出类似以下内容

Original: 🍎, 🥝, 🍌, 🍑, 🍇
Shuffled: «� ��,�����🍟,� �� �, �,��»
Shuffled Bytes: 87208e912c8d9fa5f0f0f09f8d9f2cf09f208c9d20f02c209f2c8d8d
添加注释

用户贡献的注释 1 条注释

okerem@github
1 年前
对于 Unicode 安全的混洗;

<?php
$r
= new \Random\Randomizer();
$s = join($r->shuffleArray(mb_str_split($string)));
To Top