PHP 8.4.2 Released!

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 Byte-wise shuffling breaks Unicode characters

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

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

// Побайтовое перемешивание символов, отличных от ASCII, разрушает их,
// в результате чего на выходе появляются недопустимые последовательности
// (обозначаемые символом замены Unicode) или даже совершенно другие символы.
echo "Исходные данные: ", $unicode, "\n";
echo
"Перемешанные: «", $shuffled, "»\n";
echo
"Перемешанные байты: ", bin2hex($shuffled), "\n";
?>

Вывод приведённого примера будет похож на:

Исходные данные: 🍎, 🥝, 🍌, 🍑, 🍇
Перемешанные: «� ��,�����🍟,� �� �, �,��»
Перемешанные байты: 87208e912c8d9fa5f0f0f09f8d9f2cf09f208c9d20f02c209f2c8d8d
Добавить

Примечания пользователей 1 note

up
1
okerem@github
1 year ago
For a unicode-safe shuffling;

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