out*_*tis 126
RGB十六进制字符串只是从0x0到0xFFFFFF的数字,因此只需在该范围内生成一个数字并将其转换为十六进制:
function rand_color() {
return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);
}
Run Code Online (Sandbox Code Playgroud)
要么:
function rand_color() {
return sprintf('#%06X', mt_rand(0, 0xFFFFFF));
}
Run Code Online (Sandbox Code Playgroud)
Gal*_*len 93
获取0到255之间的随机数,然后将其转换为十六进制:
function random_color_part() {
return str_pad( dechex( mt_rand( 0, 255 ) ), 2, '0', STR_PAD_LEFT);
}
function random_color() {
return random_color_part() . random_color_part() . random_color_part();
}
echo random_color();
Run Code Online (Sandbox Code Playgroud)
Not*_*pad 49
你可以使用md5来实现这个目的,非常简短
$color = substr(md5(rand()), 0, 6);
Run Code Online (Sandbox Code Playgroud)
Cas*_*oem 31
$rand = str_pad(dechex(rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
echo('#' . $rand);
Run Code Online (Sandbox Code Playgroud)
您可以更改rand()为mt_rand(),如果你愿意,你可以把strtoupper()周围的str_pad()使随机数看起来更好(尽管它不是必需的).
它完美地工作,并且比这里描述的所有其他方法更简单:)
Jak*_*ake 14
有效的十六进制颜色可以包含0到9和A到F,所以如果我们创建一个包含这些字符的字符串然后随机播放,我们可以抓取前6个字符来创建随机的十六进制颜色代码.一个例子如下!
码
echo '#' . substr(str_shuffle('ABCDEF0123456789'), 0, 6);
Run Code Online (Sandbox Code Playgroud)
我在一个while循环中测试了它并生成了10,000种独特的颜色.
我用来生成10,000种独特颜色的代码:
$colors = array();
while (true) {
$color = substr(str_shuffle('ABCDEF0123456789'), 0, 6);
$colors[$color] = '#' . $color;
if ( count($colors) == 10000 ) {
echo implode(PHP_EOL, $colors);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我这些随机颜色的结果.
outis指出我的第一个例子不能生成像'4488CC'这样的十六进制,所以我创建了一个能够生成类似十六进制的函数.
码
function randomHex() {
$chars = 'ABCDEF0123456789';
$color = '#';
for ( $i = 0; $i < 6; $i++ ) {
$color .= $chars[rand(0, strlen($chars) - 1)];
}
return $color;
}
echo randomHex();
Run Code Online (Sandbox Code Playgroud)
第二个例子会更好用,因为它可以返回比第一个例子更多不同的结果,但如果你不打算生成很多颜色代码,那么第一个例子就可以了.
最短的方式:
echo substr(uniqid(),-6); // result: 5ebf06
Run Code Online (Sandbox Code Playgroud)
这就是我的方法。
<?php echo 'rgba('.rand(0,255).', '.rand(0,255).', '.rand(0,255).', 0.73)'; ?>
Run Code Online (Sandbox Code Playgroud)
小智 5
如果有人想产生浅色
sprintf('#%06X', mt_rand(0xFF9999, 0xFFFF00));
Run Code Online (Sandbox Code Playgroud)