Это несколько субъективный вопрос, потому что да, это может быть сделано, но то, как именно вы это сделаете, будет зависеть от вашего конкретного применения - сам цвет очень субъективен в том, как он наблюдается человеком.
Вам нужно начать с разделения строки на красные, зеленые и синие компоненты:
$colourId = 'CC3333';
list($red, $green, $blue) = str_split($colourId, 2);
Тогда, возможно, было бы неплохо преобразовать их в целые числа:
$red = hexdec($red);
$green = hexdec($green);
$blue = hexdec($blue);
Затем вам нужно применить какую-то логику к нему, чтобы определить, к какому из ваших классов он относится. Как это сделать, зависит от вас, но, возможно, вы могли бы сделать что-то вроде этого:
if (max($red, $green, $blue) - min($red, $green, $blue) < 10) {
// If the values are all within a range of 10, we'll call it white
$class = 'white';
} else if (max($red, $green, $blue) == $red) {
// If red is the strongest, call it red
$class = 'red';
} else if (max($red, $green, $blue) == $green) {
// If green is the strongest, call it green
$class = 'green';
} else if (max($red, $green, $blue) == $blue) {
// If blue is the strongest, call it blue
$class = 'blue';
}