Comment puis-je générer une (pseudo)aléatoire chaîne alphanumérique, quelque chose comme: 'd79jd8c' en PHP?
Réponses
Trop de publicités?D'abord faire une chaîne avec tous les caractères:
$characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
Vous pouvez également utiliser range() pour le faire plus rapidement.
Puis, dans une boucle, choisir un nombre aléatoire et de l'utiliser comme index $de caractères chaîne de caractères pour obtenir un caractère aléatoire, et l'ajouter à votre chaîne:
$string = '';
for ($i = 0; $i < $random_string_length; $i++) {
$string .= $characters[rand(0, strlen($characters) - 1)];
}
$random_string_length est la longueur de la chaîne aléatoire.
Utiliser la table ASCII pour choisir une série de lettres, où l': $range_start , $range_end est une valeur à partir de la virgule de la colonne dans la table ASCII.
Je trouve que cette méthode est plus agréable par rapport à la méthode décrite où le nombre de caractères est défini explicitement dans une autre chaîne.
// range is numbers (48) through capital and lower case letters (122)
$range_start = 48;
$range_end = 122;
$random_string = "";
$random_string_length = 10;
for ($i = 0; $i < $random_string_length; $i++) {
$ascii_no = round( mt_rand( $range_start , $range_end ) ); // generates a number within the range
// finds the character represented by $ascii_no and adds it to the random string
// study **chr** function for a better understanding
$random_string .= chr( $ascii_no );
}
echo $random_string;
Voir Plus:
- chr de fonction
- la fonction mt_rand fonction
Peut-être que j'ai raté quelque chose ici, mais voici un moyen à l'aide de la uniqid() fonction.
L'exemple de code à Générer des Chaînes Aléatoires à l'Aide de PHP permet de faire exactement cela. Avec peu de connaissances en php, vous pouvez personnaliser cette fonction pour obtenir le type de chaînes aléatoires dont vous avez besoin:
- seuls les personnages par exemple ucvtbp3v
- mélange de chiffres et de caractères par exemple 9JP2E06R
- mélange de caractères, de chiffres et de symboles par exemple 2sczkf-j