Comment 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 :
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+