Je travaille sur un projet où je dois générer un nombre indéfini de codes de couleur hexadécimaux aléatoires Comment puis-je construire une telle fonction en PHP ?
Réponses
Trop de publicités?Les couleurs sûres pour le Web ne sont plus nécessaires (ni même un concept valable), car même les appareils mobiles ont des couleurs de plus de 16 bits de nos jours.
Voir Wikipedia pour plus d'informations.
En d'autres termes, utilisez toute couleur comprise entre #000000 et #FFFFFF.
éditer : Chers downvoters. Vérifiez d'abord l'historique des modifications de la question.
Cette version est fortement basée sur la version de @Galen ci-dessus, cependant, je voulais ajouter un contrôle de gamme qui pourrait limiter la couleur produite au rouge, vert, bleu, plus clair ou plus foncé. Cela pourrait être utile à d'autres.
function random_colour_part($lower, $upper)
{
//randomly select colour in range and convert to hexidecimal
return str_pad(dechex(mt_rand($lower, $upper)), 2, '0', STR_PAD_LEFT);
}
function random_colour($colour)
{
//loop through colour
foreach ($colour as $key => $value)
{
//retrieve each r,g,b colour range and generate random hexidecimal colour
if ($key == "r") $r = random_colour_part($value[0], $value[1]);
if ($key == "g") $g = random_colour_part($value[0], $value[1]);
if ($key == "b") $b = random_colour_part($value[0], $value[1]);
}
//return hexidecimal colour
return "#" . $r . $g . $b;
}
//generate a random red-based colour
echo random_colour(["r"=>[0,255], "g"=>[0,0], "b"=>[0,0]]);
//generate a random light green-based colour (use only half of the 255 range)
echo random_colour(["r"=>[0,0], "g"=>[127,255], "b"=>[0,0]]);
//generate a random colour of any sort
echo random_colour(["r"=>[0,255], "g"=>[0,255], "b"=>[0,255]]);
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.