Les couleurs hexagonales valides peuvent contenir de 0 à 9 et de A à F. Donc, si nous créons une chaîne avec ces caractères et que nous la mélangeons, nous pouvons prendre les 6 premiers caractères pour créer un code couleur hexagonal aléatoire. Un exemple est présenté ci-dessous !
code
echo '#' . substr(str_shuffle('ABCDEF0123456789'), 0, 6);
Je l'ai testé dans une boucle while et j'ai généré 10 000 couleurs uniques.
Le code que j'ai utilisé pour générer 10 000 couleurs uniques :
$colors = array();
while (true) {
$color = substr(str_shuffle('ABCDEF0123456789'), 0, 6);
$colors[$color] = '#' . $color;
if ( count($colors) == 10000 ) {
echo implode(PHP_EOL, $colors);
break;
}
}
Ce qui m'a donné ces couleurs aléatoires comme résultat.
outis m'a fait remarquer que mon premier exemple ne pouvait pas générer des hexadécimaux tels que '4488CC'. J'ai donc créé une fonction qui serait capable de générer des hexadécimaux de ce type.
code
function randomHex() {
$chars = 'ABCDEF0123456789';
$color = '#';
for ( $i = 0; $i < 6; $i++ ) {
$color .= $chars[rand(0, strlen($chars) - 1)];
}
return $color;
}
echo randomHex();
Il serait préférable d'utiliser le deuxième exemple car il peut renvoyer beaucoup plus de résultats différents que le premier, mais si vous ne comptez pas générer beaucoup de codes de couleur, le premier exemple conviendra parfaitement.
3 votes
Qu'entendez-vous exactement par "web safe" ? L'ancien concept de "Couleurs sûres pour le Web" n'est plus d'actualité.
0 votes
Chaque couleur a un code hexadécimal mais seules certaines sont garanties d'être rendues de la même manière sur tous les ordinateurs. Un peu de lecture : bit.ly/hnFAbB
3 votes
Comme le dit @Pekka, c'est un concept très dépassé qui date de l'époque où certains ordinateurs ne disposaient que de quelques centaines ou milliers de couleurs. Tout ordinateur susceptible de consulter le web de nos jours peut gérer des millions de couleurs. Un peu de lecture : fr.wikipedia.org/wiki/Web_colors#Web-safe_colors
0 votes
Même l'article de W3schools dont vous donnez le lien a raison : "Ce n'est pas important aujourd'hui, puisque la plupart des ordinateurs peuvent afficher des millions de couleurs différentes."
1 votes
UPDATE : J'ai supprimé "web safe" de la question, car le PO n'a pas tenu compte de cette qualification dans la réponse acceptée.