Como gerar cores aleatórias com PHP?
Muitas vezes, precisamos gerar cores aleatoriamente para utilizar no HTML ou CSS. Nesse tutorial vou ensinar uma maneira de fazer isso com o PHP.
Criando a função para gerar cores aleatórias
Não é algo complicado. Podemos simplesmente uma função para gerar cores hexadecimais aleatórias no PHP utilizando as funções mt_rand e sprintf.
Código:
function random_color($start = 0x000000, $end = 0xFFFFFF) {
return sprintf('#%06x', mt_rand($start, $end));
}
Utilização:
echo random_color(); // #add555
Explicando a função
A função sprintf tem como finalidade formatar uma string. O caractere % atua como o formatador da string.
O caractere # é utilizado para cores em hexadecimal em HTML ou CSS.
O trecho %06 significa que os valores aleatórios serão preenchidos com 0 até 6 vezes caso não chegue a 6 caracteres nossa cor hexadecimal. Fazemos isso porque no CSS é permitido apenas 3 caracteres ou 6 após o #.
O x converte o valor para a notação hexadecimal. O x converte os caracteres alfabéticos para minúsculo. Se utilizasse X, seria maísculo, mas isso não interfece em nada para o CSS, que utiliza as duas formas.
A função mt_rand se encarregará de gerar um número aleatório desde 0 até 16777215. O número 16777215 é proveniente da expressão hexadecimal 0xFFFFFF. Sabemos que no CSS, o valor para uma cor vai de #000000 (preto) até #FFFFFF (branco). Por essa razão, utilizamos o valor 0xFFFFFF. Uma expressão hexadecimal em PHP pode ser representada através de 0x[0-9a-fA-F].
Limitando as cores geradas
Nossa função possui o parâmetro $start e $end para o caso de você querer limitar a aleatoriedade das cores geradas. Por exemplo, se quisermos que gerar cores entre #DDDDDD e #FFFFFF, podemos fazer assim:
echo random_color(0xDDDDDD, 0xFFFFFF); // #e8bc3d
Usando no HTML
Você poderia tranquilamente inserir esse valor em um elemento HTML. Basta apenas fazer isso:
<div style="color: <?= random_color()?>;">Texto colorido aleatóriamente</div>