Форумы xBB

Форумы xBB > Вебразработка

PHP-функция для конвертации 16-ричного представления цвета в десятичное

Автор: dima. Последнее редактирование: 2012-01-14 13:56:45

Рылся в своих старых скриптах, выбрасывал ненужные. Но вот нашел функцию, которая преобразует строки вида "#rrggbb" и "#rgb" (шестнадцатеричное представление цвета) в массив десятичных чисел array('r' => r, 'g' => g, 'b' => b), который и возвращает. Если входная строка имеет неверный формат, то возвращает false. Символ решетки в начале входной строки необязателен.
 
Не помню, зачем мне нужна была эта функция, но просто так выбросить жалко. Поэтому выкладываю. Вдруг кому пригодится Well
 
PHP
    /**
     * 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;
    }

Ответить:

Представиться как     Антибот:
   

Просьба не постить мусор. Пользуйтесь кнопкой предварительного просмотра на панели инструментов редактора.

Введите логин: и пароль: (

© 2007-2012, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.