Signatur
Beschreibung
str_shuffle() nimmt einen String entgegen und gibt eine zufällig durchgemischte Version zurück, bei der alle Zeichen des Originals in neuer, zufälliger Reihenfolge angeordnet sind. Die Funktion arbeitet dabei direkt auf dem übergebenen String und belässt die Zeichenmenge unverändert – es werden keine Zeichen hinzugefügt oder entfernt.
Typische Einsatzbereiche sind die Generierung von schwachen Passwörtern oder Zufalls-Tokens aus einer vordefinierten Zeichenmenge, das Durchmischen von Teststringen sowie einfache Spielereien mit Text. Für sicherheitskritische Anwendungen wie kryptografisch sichere Passwörter oder Tokens sollte stattdessen random_bytes() oder random_int() verwendet werden, da str_shuffle() intern den Mersenne-Twister-Zufallsgenerator nutzt, der nicht kryptografisch sicher ist.
Multibyte-Zeichen (z. B. UTF-8-kodierte Umlaute oder Emojis) werden nicht als zusammengehörige Einheiten behandelt – str_shuffle() arbeitet byteweise. Das kann bei Multibyte-Strings zu korrumpiertem Output führen. In solchen Fällen sollte man die Zeichen manuell aufteilen (z. B. mit mb_str_split()), mischen und wieder zusammenfügen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der Eingabe-String, dessen Zeichen zufällig neu angeordnet werden sollen. |
Rückgabewert
Beispiele
Einfaches Mischen eines Strings
<?php
$original = 'Hallo Welt';
$gemischt = str_shuffle($original);
echo $original . PHP_EOL;
echo $gemischt . PHP_EOL;
Einfaches (nicht kryptografisch sicheres) Zufallspasswort generieren
<?php
$zeichenmenge = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%';
$laenge = 12;
// Zeichenmenge mehrfach wiederholen, damit genug Zeichen vorhanden sind
$pool = str_repeat($zeichenmenge, 3);
$passwort = substr(str_shuffle($pool), 0, $laenge);
echo 'Generiertes Passwort: ' . $passwort . PHP_EOL;
Multibyte-sicheres Mischen mit mb_str_split
<?php
$string = 'äöüÄÖÜß';
// Byteweises Mischen würde Multibyte-Zeichen korrumpieren
// Stattdessen: Zeichen-Array bilden, mischen, zusammenfügen
$zeichen = mb_str_split($string);
shuffle($zeichen);
$gemischt = implode('', $zeichen);
echo $gemischt . PHP_EOL;
// Wichtig · Fallstricke
Sicherheitshinweis: str_shuffle() verwendet intern keinen kryptografisch sicheren Zufallsgenerator. Für sicherheitskritische Anwendungen wie Passwörter, Tokens oder kryptografische Schlüssel sollte random_bytes() in Kombination mit bin2hex() oder base64_encode() verwendet werden.
Multibyte-Strings: Die Funktion arbeitet byteweise, nicht zeichenweise. UTF-8-kodierte Sonderzeichen bestehen aus mehreren Bytes und werden beim Mischen auseinandergerissen, was zu ungültigem UTF-8-Output führt. Nutze für solche Fälle mb_str_split() + shuffle() + implode().
Jeder Aufruf von str_shuffle() liefert einen anderen Rückgabewert, da die Reihenfolge bei jeder Ausführung neu zufällig bestimmt wird.