PHP十六进制和RGB颜色互换
两个函数均未进行数据合法性验证:
十六进制颜色 preg_match('/^#([0-9a-f]{3}|[0-9a-f]{6})$/i', $hex)===1
RGB三个值均大于等于0小于等于255
function hex2rgb($hex) {
$hex = str_replace("#", "", $hex);
if(strlen($hex) == 3){
$r = hexdec(substr($hex,0,1).substr($hex,0,1));
$g = hexdec(substr($hex,1,1).substr($hex,1,1));
$b = hexdec(substr($hex,2,1).substr($hex,2,1));
}else{
$r = hexdec(substr($hex,0,2));
$g = hexdec(substr($hex,2,2));
$b = hexdec(substr($hex,4,2));
}
return array($r, $g, $b);
}
function rgb2hex($rgb) {
if(!is_array($rgb)) $rgb=explode(',', $rgb);
$hex = "#";
$hex .= str_pad(dechex((int)$rgb[0]), 2, "0", STR_PAD_LEFT);
$hex .= str_pad(dechex((int)$rgb[1]), 2, "0", STR_PAD_LEFT);
$hex .= str_pad(dechex((int)$rgb[2]), 2, "0", STR_PAD_LEFT);
return $hex;
}
