Convert Hex Color To RGB Values In PHP


Answer :

If you want to convert hex to rgb you can use sscanf:



<?php
$hex = "#ff9900";
list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
echo "$hex -> $r $g $b";
?>


Output:



#ff9900 -> 255 153 0


Check out PHP's hexdec() and dechex() functions:
http://php.net/manual/en/function.hexdec.php



Example:



$value = hexdec('ff'); // $value = 255


I made a function which also returns alpha if alpha is provided as a second parameter the code is below.



The function



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;
}


Example of function responses



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
)


If you'd like to return the rgb(a) in CSS format just replace the return $rgb; line in the function with return implode(array_keys($rgb)) . '(' . implode(', ', $rgb) . ')';



Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable