Категория:
Опубликовано:

Конвертируем цвет из RGB в HEX на PHP

RGB to HEX

Понадобилось динамически преобразовать цвет из формата RGB в HEX для последующего использования в CSS. (Да-да, уже 2016, а я все еще стараюсь поддерживать IE < 11.)

При этом, если у значения есть альфа-канал - его нужно оставить прежним.

Написал небольшой сниппет, ниже привожу его.

/**
 * Make HEX color from rgb().
 *
 * @param $color
 * @return string
 */
function rgb2hex($color) {
  // Проверяем чтоб входящие данные были именно RGB(), а не, например, RGBA()
  if (substr($color, 0, 4) == 'rgb(') {

    // Удаляем все символы, кроме цифр и запятых
    $rgb = array_map('trim', explode(',', preg_replace('/[^0-9,]/', '', $color)));

    // Проверяем чтоб были все 2 значения - "R", "G" и "B" и производим конвертацию
    if (count($rgb) == 3) {
      $color = '#' . sprintf('%02x', $rgb[0]) . sprintf('%02x', $rgb[1]) . sprintf('%02x', $rgb[2]);
    }
  }

  // Возвращаем преобразованный цвет, в случае "правильных входящих данных".
  // Или то что нам дали изначально, если оно не удовлетворяет нас )))
  return $color;
}

На выходе мы получим преобразованную строку, к примеру:

  • rgb(255, 255, 255) будет преобразован в #ffffff
  • rgba(255, 255, 255, 0.4) таким же и вернется
Если у Вас возникли вопросы, замечания, предложения или просто благодарность - пишите в комментариях.
Делитесь полезными материалами в социальных сетях.