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 — Obtém uma permutação byte a byte de uma string
Retorna uma permutação uniformemente selecionada dos bytes
de entrada.
Cada permutação possível dos bytes
de entrada tem a mesma probabilidade de ser retornada.
Uma permutação dos bytes do parâmetro bytes
.
Random\Randomizer::$engine
subjacente.
Exemplo #1 Exemplo de Random\Randomizer::shuffleBytes()
<?php
$r = new \Random\Randomizer();
// Embaralhar bytes em uma string:
echo "«", $r->shuffleBytes("PHP is great!"), "»\n";
?>
O exemplo acima produzirá algo semelhante a:
« ga rHs!PPiet»
Exemplo #2 O embaralhamento byte a byte quebra os caracteres Unicode
<?php
$r = new \Random\Randomizer();
$unicode = "🍎, 🥝, 🍌, 🍑, 🍇";
$shuffled = $r->shuffleBytes( $unicode );
// O embaralhamento byte a byte de caracteres não ASCII os destrói,
// resultando em sequências inválidas (indicadas pelo caractere
// de substituição Unicode) ou até mesmo caracteres totalmente
// diferentes aparecendo na saída.
echo "Original: ", $unicode, "\n";
echo "Embraralhado: «", $shuffled, "»\n";
echo "Bytes embaralhados: ", bin2hex($shuffled), "\n";
?>
O exemplo acima produzirá algo semelhante a:
Original: 🍎, 🥝, 🍌, 🍑, 🍇 Shuffled: «� ��,�����🍟,� �� �, �,��» Shuffled Bytes: 87208e912c8d9fa5f0f0f09f8d9f2cf09f208c9d20f02c209f2c8d8d
For a unicode-safe shuffling;
<?php
$r = new \Random\Randomizer();
$s = join($r->shuffleArray(mb_str_split($string)));