如何将字符串转换为 html 颜色代码哈希?
我想将字符串表示为任意html颜色。
例:
“blah blah” = #FFCC00
“foo foo 2” = #565656
实际的颜色代码是什么并不重要,只要它是有效的十六进制HTML颜色代码并且整个光谱都得到了很好的表示。
我想第一步是在字符串上做一个MD5,然后以某种方式将其转换为十六进制颜色代码?
更新:使用示例是在服务器上生成文件请求的可视报告。颜色不必看起来很漂亮,更多的是人脑可以更容易地检测数据中的模式等。
我想将字符串表示为任意html颜色。
例:
“blah blah” = #FFCC00
“foo foo 2” = #565656
实际的颜色代码是什么并不重要,只要它是有效的十六进制HTML颜色代码并且整个光谱都得到了很好的表示。
我想第一步是在字符串上做一个MD5,然后以某种方式将其转换为十六进制颜色代码?
更新:使用示例是在服务器上生成文件请求的可视报告。颜色不必看起来很漂亮,更多的是人脑可以更容易地检测数据中的模式等。
感谢您的指点,这似乎做得很好:
function stringToColorCode($str) {
$code = dechex(crc32($str));
$code = substr($code, 0, 6);
return $code;
}
$str = 'test123';
print '<span style="background-color:#'.stringToColorCode($str).'">'.$str.'</span>';
几乎总是,只要使用随机颜色就会
我建议创建一个(很长的)颜色列表,这些颜色可以很好地协同工作并与您的背景一起工作 - 然后只需将字符串和模量(%)与颜色数量进行哈希处理,即可将索引放入表中。
public function colorFromString($string)
{
$colors = [
'#0074D9',
'#7FDBFF',
'#39CCCC',
// this list should be as long as practical to avoid duplicates
];
// generate a partial hash of the string (a full hash is too long for the % operator)
$hash = substr(sha1($string), 0, 10);
// determine the color index
$colorIndex = hexdec($hash) % count($colors);
return $colors[$colorIndex];
}