This function will convert hexadecimal colors with a length of 6, 3, 2, or 1 into their RGB decimal equivalents. If a value cannot be converted, it defaults to black…
function hex2rgb($hex = NULL) { preg_match('/^#{0,1}([0-9a-f]{1,6})$/i', $hex, $matches); if ($hex[0] == '#') $hex = substr($hex, 1); $length = @strlen($matches[1]); switch ($length) { case 6: $rgb = array($hex[0] . $hex[1], $hex[2] . $hex[3], $hex[4] . $hex[5]); break; case 3: $rgb = array($hex[0] . $hex[0], $hex[1] . $hex[1], $hex[2] . $hex[2]); break; case 2: $rgb = array($hex[0] . $hex[1], $hex[0] . $hex[1], $hex[0] . $hex[1]); break; default: $hex = ($length == 1) ? $hex . $hex : 0; $rgb = array($hex, $hex, $hex); break; } return array( 'r' => hexdec($rgb[0]), 'g' => hexdec($rgb[1]), 'b' => hexdec($rgb[2]) ); }
Short, simple and sweet 🙂