Категория:
Опубликовано:
Конвертируем цвет из RGB в HEX на PHP
Понадобилось динамически преобразовать цвет из формата 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) таким же и вернется
Делитесь полезными материалами в социальных сетях.