For a unicode-safe shuffling;
<?php
$r = new \Random\Randomizer();
$s = join($r->shuffleArray(mb_str_split($string)));
(PHP 8 >= 8.2.0)
Random\Randomizer::shuffleBytes — Получает байтовую перестановку строки
Возвращает равномерно выбранную перестановку входных байтов bytes
.
Каждая возможная перестановка входного значения bytes
с равной вероятностью будет возвращена.
Перестановка байтов параметра bytes
.
Random\Randomizer::$engine
.
Пример #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
For a unicode-safe shuffling;
<?php
$r = new \Random\Randomizer();
$s = join($r->shuffleArray(mb_str_split($string)));
Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!
Check out: eBank.nz (Art Generator) |
Netwrck.com (AI Tools) |
Text-Generator.io (AI API) |
BitBank.nz (Crypto AI) |
ReadingTime (Kids Reading) |
RewordGame |
BigMultiplayerChess |
WebFiddle |
How.nz |
Helix AI Assistant