note 93835 modified in function.hexdec by danbrown

From: Date: Wed, 27 Jan 2010 14:34:27 +0000
Subject: note 93835 modified in function.hexdec by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-165365@lists.php.net to get a copy of this message
RGB to Hex Hex to RGB Function <?PHP function rgb2hex2rgb($c){ if(!$c) return false; $c = trim($c); $out = false; if(preg_match("/^[0-9ABCDEFabcdef\#]+$/i", $c)){ $c = str_replace('#','', $c); $l = strlen($c) == 3 ? 1 : (strlen($c) == 6 ? 2 : false); if($l){ unset($out); $out[0] = $out['r'] = $out['red'] = hexdec(substr($c, 0,1*$l)); $out[1] = $out['g'] = $out['green'] = hexdec(substr($c, 1*$l,1*$l)); $out[2] = $out['b'] = $out['blue'] = hexdec(substr($c, 2*$l,1*$l)); }else $out = false; }elseif (preg_match("/^[0-9]+(,| |.)+[0-9]+(,| |.)+[0-9]+$/i", $c)){ $spr = str_replace(array(',',' ','.'), ':', $c); $e = explode(":", $spr); if(count($e) != 3) return false; $out = '#'; for($i = 0; $i<3; $i++) $e[$i] = dechex(($e[$i] <= 0)?0:(($e[$i] >= 255)?255:$e[$i])); for($i = 0; $i<3; $i++) $out .= ((strlen($e[$i]) < 2)?'0':'').$e[$i]; $out = strtoupper($out); }else $out = false; return $out; } ?> Output #FFFFFF => Array{ red=>255, green=>255, blue=>255, r=>255, g=>255, b=>255, 0=>255, 1=>255, 2=>255 } #FFCCEE => Array{ red=>255, green=>204, blue=>238, r=>255, g=>204, b=>238, 0=>255, 1=>204, 2=>238 } CC22FF => Array{ red=>204, green=>34, blue=>255, r=>204, g=>34, b=>255, 0=>204, 1=>34, 2=>255 } 0 65 255 => #0041FF 255.150.3 => #FF9603 100,100,250 => #6464FA [EDIT BY danbrown AT php DOT net - Contains multiple bugfixes by (ajim1417 AT gmail DOT com) on 27-JAN-2010: Replaces typo in explode() and updates eregi() calls to preg_match().] --was-- RGB to Hex Hex to RGB Function <?PHP function rgb2hex2rgb($c){ if(!$c) return false; $c = trim($c); $out = false; if(eregi("^[0-9ABCDEFabcdef\#]+$", $c)){ $c = str_replace('#','', $c); $l = strlen($c) == 3 ? 1 : (strlen($c) == 6 ? 2 : false); if($l){ unset($out); $out[0] = $out['r'] = $out['red'] = hexdec(substr($c, 0,1*$l)); $out[1] = $out['g'] = $out['green'] = hexdec(substr($c, 1*$l,1*$l)); $out[2] = $out['b'] = $out['blue'] = hexdec(substr($c, 2*$l,1*$l)); }else $out = false; }elseif (eregi("^[0-9]+(,| |.)+[0-9]+(,| |.)+[0-9]+$", $c)){ $spr = str_replace(array(',',' ','.'), ':', $c); $e = explode(":",$c); if(count($e) != 3) return false; $out = '#'; for($i = 0; $i<3; $i++) $e[$i] = dechex(($e[$i] <= 0)?0:(($e[$i] >= 255)?255:$e[$i])); for($i = 0; $i<3; $i++) $out .= ((strlen($e[$i]) < 2)?'0':'').$e[$i]; $out = strtoupper($out); }else $out = false; return $out; } echo '#FFFFFF => '.rgb2hex2rgb('#FFFFFF').'<br>'; echo '#FFCCEE => '.rgb2hex2rgb('#FFCCEE').'<br>'; echo 'CC22FF => '.rgb2hex2rgb('CC22FF').'<br>'; echo '0 65 255 => '.rgb2hex2rgb('0 65 255').'<br>'; echo '255.150.3 => '.rgb2hex2rgb('255.150.3').'<br>'; echo '100,100,250 => '.rgb2hex2rgb('100,100,250').'<br>'; ?> Output #FFFFFF => Array{ red=>255, green=>255, blue=>255, r=>255, g=>255, b=>255, 0=>255, 1=>255, 2=>255 } #FFCCEE => Array{ red=>255, green=>204, blue=>238, r=>255, g=>204, b=>238, 0=>255, 1=>204, 2=>238 } CC22FF => Array{ red=>204, green=>34, blue=>255, r=>204, g=>34, b=>255, 0=>204, 1=>34, 2=>255 } 0 65 255 => #0041FF 255.150.3 => #FF9603 100,100,250 => #6464FA http://php.net/manual/en/function.hexdec.php

« previous php.notes (#165365) next »