PHP를 사용하여 임의 16진수 색상 코드 생성

저는 정의되지 않은 수의 16진수 랜덤 컬러 코드를 생성해야 하는 프로젝트를 진행하고 있습니다. PHP에 이러한 기능을 구축하는 방법은 무엇입니까?



질문에 대한 답변



RGB의 16진수 문자열은 0x0 ~0xFFFF의 숫자이므로 해당 범위의 숫자를 생성하고 16진수로 변환하기만 하면 됩니다.

function rand_color() {
return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT); } 

또는 다음과 같이 입력합니다.

function rand_color() {
return sprintf('#%06X', mt_rand(0, 0xFFFFFF)); } 



0 ~ 255의 난수를 얻은 후 16진수로 변환합니다.

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(); 



md5는 그 목적에 사용할 수 있습니다.매우 짧습니다.

$color = substr(md5(rand()), 0, 6); 



$rand = str_pad(dechex(rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT); echo('#' . $rand); 

변경할 수 있습니다.rand()할 준비가 되어.mt_rand()당신이 원한다면, 그리고 당신은 넣을 수 있습니다.strtoupper()에워싸여str_pad()(필수는 아니지만) 랜덤한 숫자가 더 보기 좋게 보이도록 하기 위해.

이 방법은 완벽하게 동작하며 여기에 설명된 다른 모든 방법보다 훨씬 단순합니다.




유효한 16진수 색상은 0~9와 A~F를 포함할 수 있습니다.따라서 해당 문자로 문자열을 작성한 후 셔플하면 처음 6자를 가져와 랜덤 16진수 색 코드를 생성할 수 있습니다.다음은 예시입니다!

코드

echo '#' . substr(str_shuffle('ABCDEF0123456789'), 0, 6); 

잠시 후 루프 테스트를 통해 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;
} } 

그 결과 이렇게 랜덤하게 색을 입게 되었습니다.


첫 번째 예에서는 ‘4488CC’와 같은 16진수를 생성할 수 없다고 해서 16진수를 생성할 수 있는 함수를 만들었습니다.

코드

function randomHex() {
$chars = 'ABCDEF0123456789';
$color = '#';
for ( $i = 0; $i < 6; $i++ ) {
$color .= $chars[rand(0, strlen($chars) - 1)];
}
return $color; }
echo randomHex(); 

두 번째 예는 첫 번째 예보다 훨씬 다른 결과를 반환할 수 있기 때문에 사용하는 것이 좋습니다.그러나 많은 컬러 코드를 생성하지 않을 경우 첫 번째 예제는 정상적으로 작동합니다.