Convert hex color to RGB values in PHP

前端 未结 15 1860
轮回少年
轮回少年 2020-11-30 21:32

What would be a good way to convert hex color values like #ffffff into the single RGB values 255 255 255 using PHP?

15条回答
  •  南笙
    南笙 (楼主)
    2020-11-30 22:30

    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) . ')';

提交回复
热议问题