PHP : Générer une chaîne aléatoire

php-generer-une-chaine-aleatoireComment générer une chaîne aléatoire en PHP ?

Et plus précisément comment obtenir une chaîne d’une certaine longueur et contenant certains caractères (ou plutôt en en excluant).

C’est ce que fait cette petite fonction sans prétention :

[php]
/**
* Generate a random string
*
* @name str_rand
* @param int $iLength
* @param string $sExclude
* @return string
*/
function str_rand($iLength=15, $sExclude= »)
{
// init.
$sString =  »; // la chaîne qui va être retourner
$sPossible = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZ0123456789′; // les caractères possibles
$sSource = ($sExclude!= ») ? str_replace(str_split($sExclude),  »,$sPossible) : $sPossible; // on exclu certains caractères ?
$iLength = abs(intval($iLength)); // protection
$iMax = strlen($sSource)-1; // nombre de caractère possible

// boucle
for($iKey=0; $iKey<$iLength; $iKey++) {
$sString .= substr($sSource, mt_rand(0, $iMax), 1);
}

// return
return $sString;
}
[/php]

Et 2 exemples d’appel :

[php]
echo ‘Exemple 1 (10 caractères) : ‘ . str_rand(10);
echo ‘Exemple 2 (6 caractères sans o, O ni 0) : ‘ . str_rand(6, ‘oO0′);
[/php]

Ça peut servir pour générer un mot de passe par exemple :)

Les fonctions utilisés sur la documentation officielle :

Article written by devzonefr

Développeur d'applications de formation, je me suis aujourd'hui spécialisé dans le développement web.

Une réponse à “PHP : Générer une chaîne aléatoire”

  1. Eroan

    Sympa ! Perso j’utilise les fonctions md5, mt_rand et substr de php pour générer des chaînes de caractères + chiffres de la taille souhaitée.

    Le résultat est identique au code ci-dessus mais certainement moins gourmand en ressources ;)

    a+

Laisser un commentaire