2015-10-06 185 views
6

颜色值在我的代码,我有RGB转换为十六进制的PHP

$color = rgb(255, 255, 255); 

我想这个转换为十六进制颜色code.Out让像

$color = '#ffffff'; 
+0

gist.github.com/Pushplaybang/5432844 ...这将代码返回看一看 – Tushar

回答

0

你可以试试这个

function rgb2html($r, $g=-1, $b=-1) 
{ 
    if (is_array($r) && sizeof($r) == 3) 
     list($r, $g, $b) = $r; 

    $r = intval($r); $g = intval($g); 
    $b = intval($b); 

    $r = dechex($r<0?0:($r>255?255:$r)); 
    $g = dechex($g<0?0:($g>255?255:$g)); 
    $b = dechex($b<0?0:($b>255?255:$b)); 

    $color = (strlen($r) < 2?'0':'').$r; 
    $color .= (strlen($g) < 2?'0':'').$g; 
    $color .= (strlen($b) < 2?'0':'').$b; 
    return '#'.$color; 
} 
3

您可以使用以下功能

function fromRGB($R, $G, $B) 
{ 

    $R = dechex($R); 
    if (strlen($R)<2) 
    $R = '0'.$R; 

    $G = dechex($G); 
    if (strlen($G)<2) 
    $G = '0'.$G; 

    $B = dechex($B); 
    if (strlen($B)<2) 
    $B = '0'.$B; 

    return '#' . $R . $G . $B; 
} 

然后,echo fromRGB(115,25,190);将打印#7319be

来源:RGB to hex colors and hex colors to RGB - PHP

35

一个简单的sprintf会做。

$color = sprintf("#%02x%02x%02x", 13, 0, 255); // #0d00ff 

以分解的格式:

  • # - 字面字符#
  • % - 转换规范的开始
  • 0 - 用于填充
  • 2字符 - 转换应该导致的最小字符数,根据需要填充
  • x - 所述参数被视为一个整数并表示为小写字母
  • %02x%02x一个十六进制数 - 上述四个重复两次
+2

如何优雅!做得好! – Michael

3

可以尝试这一段简单的下面的代码。您也可以在代码中动态传递rgb代码。

$rgb = (123,222,132); 
$rgbarr = explode(",",$rgb,3); 
echo sprintf("#%02x%02x%02x", $rgbarr[0], $rgbarr[1], $rgbarr[2]); 

喜欢#7bde84

+0

第一行代码看起来不对,这是指数组还是你忘记了“rgb”函数名? – donquixote

+0

这是一个数组。为我工作得很好,所以我没有发现任何问题。 – TESTasy

+0

在PHP中使用圆括号的数组? https://3v4l.org/19C2v – donquixote