par
Ryle » 25 juin 2007, 16:42
Le plus simple pour éviter de t'embête avec des vérification serait selon moi de faire 3 chaines : nombre, minuscules, majuscules et de récupérer dans chaque, 1, 6 et 1 caractères. Ainsi tu es sur d'avoir ton format.

Quant à l'ordre, tu peux par exemple les coller dans un tableau et utiliser la fonction shuffle() pour les mélanger :
$listeNb = '23456789';
$listeMin = 'abcdefghkpqrstwxyz';
$listeMaj = 'ABCDEFGHKJLMNPQRSTUVWXYZ';
$tab = array();
$tab[] = $listeNb[mt_rand(0, strlen($listeNb)-1)]; // 1 chiffre
$tab[] = $listeMaj[mt_rand(0, strlen($listeMaj)-1)]; // 1 majuscule
for ($i=0;$i<6;$i++) { // 6 minuscules
$tab[] = $listeMin[mt_rand(0, strlen($listeMin)-1)];
}
shuffle($tab); // mélange les lettres
return implode('', $tab);
Le plus simple pour éviter de t'embête avec des vérification serait selon moi de faire 3 chaines : nombre, minuscules, majuscules et de récupérer dans chaque, 1, 6 et 1 caractères. Ainsi tu es sur d'avoir ton format. :)
Quant à l'ordre, tu peux par exemple les coller dans un tableau et utiliser la fonction shuffle() pour les mélanger :
[php]$listeNb = '23456789';
$listeMin = 'abcdefghkpqrstwxyz';
$listeMaj = 'ABCDEFGHKJLMNPQRSTUVWXYZ';
$tab = array();
$tab[] = $listeNb[mt_rand(0, strlen($listeNb)-1)]; // 1 chiffre
$tab[] = $listeMaj[mt_rand(0, strlen($listeMaj)-1)]; // 1 majuscule
for ($i=0;$i<6;$i++) { // 6 minuscules
$tab[] = $listeMin[mt_rand(0, strlen($listeMin)-1)];
}
shuffle($tab); // mélange les lettres
return implode('', $tab);[/php]