19 août 2009

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

PHP : Générer une chaîne aléatoireComment 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 :

BlogBang

Un commentaire

  1. Eroan dit :

    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





Additional comments powered by BackType