Tôi đồng ý với sje397 ở trên rằng màu sắc hoàn toàn ngẫu nhiên có thể sẽ trông khó chịu. Thay vì tạo ra một danh sách dài các màu sắc đẹp, tôi sẽ đề nghị chọn một giá trị độ bão hòa không đổi + phát quang và thay đổi màu sắc dựa trên nội dung. Để có được màu RGB từ màu HSL, bạn có thể sử dụng một cái gì đó tương tự như những gì được mô tả trong http://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB.
Dưới đây là một ví dụ (thử nó trong http://codepad.viper-7.com một cái gì đó mà làm việc, chẳng hạn như https://codepad.remoteinterview.io/ZXBMZWYJFO):
<?php
function hsl2rgb($H, $S, $V) {
$H *= 6;
$h = intval($H);
$H -= $h;
$V *= 255;
$m = $V*(1 - $S);
$x = $V*(1 - $S*(1-$H));
$y = $V*(1 - $S*$H);
$a = [[$V, $x, $m], [$y, $V, $m],
[$m, $V, $x], [$m, $y, $V],
[$x, $m, $V], [$V, $m, $y]][$h];
return sprintf("#%02X%02X%02X", $a[0], $a[1], $a[2]);
}
function hue($tstr) {
return unpack('L', hash('adler32', $tstr, true))[1];
}
$phrase = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
$words = [];
foreach (explode(' ', $phrase) as $word)
$words[hue($word)] = $word;
ksort($words);
foreach ($words as $h => $word) {
$col = hsl2rgb($h/0xFFFFFFFF, 0.4, 1);
printf('<span style="color:%s">%s</span> ', $col, $word);
}
?>
Bạn có muốn để ánh xạ một chuỗi mã hex 6 chữ số? – codaddict
Bạn có thể cho ví dụ về cách bạn sẽ sử dụng các chuỗi này không? Tại sao bạn không đặt các mã màu trong các biến php? – Mischa
đi với suy nghĩ của codaddict: băm nó và mất 6 byte đầu tiên? – russau