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>