|
Форумы xBB > Вебразработка
PHP-функция для конвертации 16-ричного представления цвета в десятичное
Автор: dima.
Последнее редактирование: 2012-01-14 13:56:45
Рылся в своих старых скриптах, выбрасывал ненужные. Но вот нашел функцию, которая преобразует строки вида "#rrggbb" и "#rgb" (шестнадцатеричное представление цвета) в массив десятичных чисел array('r' => r, 'g' => g, 'b' => b), который и возвращает. Если входная строка имеет неверный формат, то возвращает false. Символ решетки в начале входной строки необязателен.
Не помню, зачем мне нужна была эта функция, но просто так выбросить жалко. Поэтому выкладываю. Вдруг кому пригодится
/**
* Convert color string of hexadecimal to array of decimal
*
* Convert a string "#rrggbb" or "#rgb" (in hexadecimal form)
* to an array('r' => r, 'g' => g, 'b' => b) with decimal values.
*
* @param string $hexRgb Hexadecimal color string
* @return array|false Array of decimal values or false,
* if hexadecimal string invalid
*/
function hexRgbToDecArray($hexRgb)
{
$hexRgb = (string) $hexRgb;
if (! $hexRgb) {
return false;
}
$result = array();
if ($hexRgb{0} == '#') {
$hexRgb = substr($hexRgb, 1);
}
$hexRgbLen = strlen($hexRgb);
if (6 == $hexRgbLen) {
$result['r'] = hexdec(substr($hexRgb, 0, 2));
$result['g'] = hexdec(substr($hexRgb, 2, 2));
$result['b'] = hexdec(substr($hexRgb, 4, 2));
} elseif (3 == $hexRgbLen) {
$result['r'] = hexdec($hexRgb{0});
$result['g'] = hexdec($hexRgb{1});
$result['b'] = hexdec($hexRgb{2});
} else {
return false;
}
return $result;
}
Ответить:
|