CakeFest 2024: The Official CakePHP Conference

Random\Randomizer::shuffleBytes

(PHP 8 >= 8.2.0)

Random\Randomizer::shuffleBytesGet a byte-wise permutation of a string

Description

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

Returns a uniformly selected permutation of the input bytes.

Each possible permutation of the input bytes is equally likely to be returned.

Liste de paramètres

bytes

The chaîne de caractères whose bytes are shuffled.

The input chaîne de caractères will not be modified.

Valeurs de retour

A permutation of the bytes of bytes.

Erreurs / Exceptions

Exemples

Exemple #1 Random\Randomizer::shuffleBytes() example

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

// Shuffle bytes in a string:
echo "«", $r->shuffleBytes("PHP is great!"), "»\n";
?>

Résultat de l'exemple ci-dessus est similaire à :

« ga rHs!PPiet»

Exemple #2 Byte-wise shuffling breaks Unicode characters

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

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

// Byte-wise shuffling of non-ASCII characters destroys them,
// resulting in invalid sequences (indicated by the Unicode
// replacement character) or even entirely different characters
// appearing in the output.
echo "Original: ", $unicode, "\n";
echo
"Shuffled: «", $shuffled, "»\n";
echo
"Shuffled Bytes: ", bin2hex($shuffled), "\n";
?>

Résultat de l'exemple ci-dessus est similaire à :

Original: 🍎, 🥝, 🍌, 🍑, 🍇
Shuffled: «� ��,�����🍟,� �� �, �,��»
Shuffled Bytes: 87208e912c8d9fa5f0f0f09f8d9f2cf09f208c9d20f02c209f2c8d8d
add a note

User Contributed Notes 1 note

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

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