在PHP中将十六进制颜色转换为RGB值
使用PHP将十六进制颜色值(如#ffffff
转换为单个RGB值255 255 255
是一种好方法?
查看PHP的hexdec()
和dechex()
函数:http: dechex()
例:
$value = hexdec('ff'); // $value = 255
如果你想将十六进制转换为rgb,你可以使用sscanf
:
<?php
$hex = "#ff9900";
list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
echo "$hex -> $r $g $b";
?>
输出:
#ff9900 -> 255 153 0
我做了一个函数,如果alpha作为代码下面的第二个参数提供,它也会返回alpha。
功能
function hexToRgb($hex, $alpha = false) {
$hex = str_replace('#', '', $hex);
$length = strlen($hex);
$rgb['r'] = hexdec($length == 6 ? substr($hex, 0, 2) : ($length == 3 ? str_repeat(substr($hex, 0, 1), 2) : 0));
$rgb['g'] = hexdec($length == 6 ? substr($hex, 2, 2) : ($length == 3 ? str_repeat(substr($hex, 1, 1), 2) : 0));
$rgb['b'] = hexdec($length == 6 ? substr($hex, 4, 2) : ($length == 3 ? str_repeat(substr($hex, 2, 1), 2) : 0));
if ( $alpha ) {
$rgb['a'] = $alpha;
}
return $rgb;
}
函数响应的例子
print_r(hexToRgb('#19b698'));
Array (
[r] => 25
[g] => 182
[b] => 152
)
print_r(hexToRgb('19b698'));
Array (
[r] => 25
[g] => 182
[b] => 152
)
print_r(hexToRgb('#19b698', 1));
Array (
[r] => 25
[g] => 182
[b] => 152
[a] => 1
)
print_r(hexToRgb('#fff'));
Array (
[r] => 255
[g] => 255
[b] => 255
)
如果您想以CSS格式返回rgb(a),则只需替换return $rgb;
在函数中使用return implode(array_keys($rgb)) . '(' . implode(', ', $rgb) . ')';
return implode(array_keys($rgb)) . '(' . implode(', ', $rgb) . ')';