PHP : Générer une chaîne aléatoire
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 :
/**
* 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;
}
Et 2 exemples d’appel :
echo 'Exemple 1 (10 caractères) : ' . str_rand(10); echo 'Exemple 2 (6 caractères sans o, O ni 0) : ' . str_rand(6, 'oO0');
Ça peut servir pour générer un mot de passe par exemple
Les fonctions utilisés sur la documentation officielle :
Un commentaire
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+
Déposez un commentaire