Ich möchte eine einzige allgemeine Funktion haben, die ähnliche Situationen bewältigen kann. Damit meine ich eine Funktion, die sowohl die geforderte Länge der generierten Zeichenfolge als auch die möglichen Zeichen, die darin vorkommen können, erhält.
Auf diese Weise kann eine einzige Funktion erstellt werden: 40-stellige Dezimalzahl, 16-stellige Hexadezimalzahl in Großbuchstaben, 100 Buchstaben in Kleinbuchstaben usw...
Hier ist meine Umsetzung:
/**
* Generate a random string.
*
* @param int $length Length of the generated string.
* @param string $chars The string containing all of the available characters.
*
* @return string The generated string.
*/
function getRandomString($length = 10, $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') {
$str = '';
$size = strlen($chars);
for ($i = 0; $i < $length; $i++) {
$str .= $chars[mt_rand(0, $size - 1)];
}
return $str;
}
WICHTIG! Verwenden Sie diese Funktion nicht, um eine zufällige Zeichenfolge für Sicherheitszwecke zu erzeugen. Für einen sicheren String-Generator sehen Sie sich die Antwort von @danorton an.