Abs
Abs

Reputation: 57916

How to convert a string color to its hex code or RGB value?

I would like to create some sort of function where you pass in a string such as "yellow" or "green" and it returns its hex code or the range of hex codes that greens or yellows fit into.

Is this possible in PHP? If not possible, I am willing to try anything else that can do this!

Upvotes: 11

Views: 18744

Answers (3)

Harry59FR
Harry59FR

Reputation: 1

In 2024, the seemingly simple problem remains unanswered...simple My contribution will be in the form of a mysql table which could solve this 'thorny problem' here is the structure

 -- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Hôte : 127.0.0.1
-- Généré le : jeu. 11 jan. 2024 à 11:32
-- Version du serveur : 10.4.28-MariaDB
-- Version de PHP : 8.2.4

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";

--
-- Base de données : `xxxxx`
--

-- --------------------------------------------------------

--
-- Structure de la table `css2hex`
--

CREATE TABLE `css2hex` (
  `name` varchar(255) NOT NULL,
  `hex` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `css2hex`
--

INSERT INTO `css2hex` (`name`, `hex`) VALUES
('AliceBlue', '#F0F8FF'),
('AntiqueWhite', '#FAEBD7'),
('Aqua', '#00FFFF'),
('Aquamarine', '#7FFFD4'),
('Azure', '#F0FFFF'),
('Beige', '#F5F5DC'),
('Bisque', '#FFE4C4'),
('Black', '#000000'),
('BlanchedAlmond', '#FFEBCD'),
('Blue', '#0000FF'),
('BlueViolet', '#8A2BE2'),
('Brown', '#A52A2A'),
('BurlyWood', '#DEB887'),
('CadetBlue', '#5F9EA0'),
('Chartreuse', '#7FFF00'),
('Chocolate', '#D2691E'),
('Coral', '#FF7F50'),
('CornflowerBlue', '#6495ED'),
('Cornsilk', '#FFF8DC'),
('Crimson', '#DC143C'),
('Cyan', '#00FFFF'),
('DarkBlue', '#00008B'),
('DarkCyan', '#008B8B'),
('DarkGoldenrod', '#B8860B'),
('DarkGray', '#A9A9A9'),
('DarkGreen', '#006400'),
('DarkGrey', '#A9A9A9'),
('DarkKhaki', '#BDB76B'),
('DarkMagenta', '#8B008B'),
('DarkOliveGreen', '#556B2F'),
('DarkOrange', '#FF8C00'),
('DarkOrchid', '#9932CC'),
('DarkRed', '#8B0000'),
('DarkSalmon', '#E9967A'),
('DarkSeaGreen', '#8FBC8F'),
('DarkSlateBlue', '#483D8B'),
('DarkSlateGray', '#2F4F4F'),
('DarkSlateGrey', '#2F4F4F'),
('DarkTurquoise', '#00CED1'),
('DarkViolet', '#9400D3'),
('DeepPink', '#FF1493'),
('DeepSkyBlue', '#00BFFF'),
('DimGray', '#696969'),
('DodgerBlue', '#1E90FF'),
('FireBrick', '#B22222'),
('FloralWhite', '#FFFAF0'),
('ForestGreen', '#228B22'),
('Fuchsia', '#FF00FF'),
('Gainsboro', '#DCDCDC'),
('GhostWhite', '#F8F8FF'),
('Gold', '#FFD700'),
('Goldenrod', '#DAA520'),
('Gray', '#808080'),
('Green', '#008000'),
('GreenYellow', '#ADFF2F'),
('Grey', '#808080'),
('Honeydew', '#F0FFF0'),
('HotPink', '#FF69B4'),
('IndianRed', '#CD5C5C'),
('Indigo', '#4B0082'),
('Ivory', '#FFFFF0'),
('Khaki', '#F0E68C'),
('Lavender', '#E6E6FA'),
('LavenderBlush', '#FFF0F5'),
('LawnGreen', '#7CFC00'),
('LemonChiffon', '#FFFACD'),
('LightBlue', '#ADD8E6'),
('LightCoral', '#F08080'),
('LightCyan', '#E0FFFF'),
('LightGoldenrodYellow', '#FAFAD2'),
('LightGray', '#D3D3D3'),
('LightGreen', '#90EE90'),
('LightGrey', '#D3D3D3'),
('LightPink', '#FFB6C1'),
('LightSalmon', '#FFA07A'),
('LightSeaGreen', '#20B2AA'),
('LightSkyBlue', '#87CEFA'),
('LightSlateGray', '#778899'),
('LightSlateGrey', '#778899'),
('LightSteelBlue', '#B0C4DE'),
('LightYellow', '#FFFFE0'),
('Lime', '#00FF00'),
('LimeGreen', '#32CD32'),
('Linen', '#FAF0E6'),
('Magenta', '#FF00FF'),
('Maroon', '#800000'),
('MediumAquamarine', '#66CDAA'),
('MediumBlue', '#0000CD'),
('MediumOrchid', '#BA55D3'),
('MediumPurple', '#9370D0'),
('MediumSeaGreen', '#3CB371'),
('MediumSlateBlue', '#7B68EE'),
('MediumSpringGreen', '#00FA9A'),
('MediumTurquoise', '#48D1CC'),
('MediumVioletRed', '#C71585'),
('MidnightBlue', '#191970'),
('MintCream', '#F5FFFA'),
('MistyRose', '#FFE4E1'),
('Moccasin', '#FFE4B5'),
('NavajoWhite', '#FFDEAD'),
('Navy', '#000080'),
('OldLace', '#FDF5E6'),
('Olive', '#808000'),
('OliveDrab', '#6B8E23'),
('Orange', '#FFA500'),
('OrangeRed', '#FF4500'),
('Orchid', '#DA70D6'),
('PaleGoldenrod', '#EEE8AA'),
('PaleGreen', '#98FB98'),
('PaleTurquoise', '#AFEEEE'),
('PaleVioletRed', '#DB7093'),
('PapayaWhip', '#FFEFD5'),
('PeachPuff', '#FFDAB9'),
('Peru', '#CD853F'),
('Pink', '#FFC0CB'),
('Plum', '#DDA0DD'),
('PowderBlue', '#B0E0E6'),
('Purple', '#800080'),
('Rebeccapurple', '#663399'),
('Red', '#FF0000'),
('RosyBrown', '#BC8F8F'),
('RoyalBlue', '#4169E1'),
('SaddleBrown', '#8B4513'),
('Salmon', '#FA8072'),
('SandyBrown', '#F4A460'),
('SeaGreen', '#2E8B57'),
('Seashell', '#FFF5EE'),
('Sienna', '#A0522D'),
('Silver', '#C0C0C0'),
('SkyBlue', '#87CEEB'),
('SlateBlue', '#6A5ACD'),
('SlateGray', '#708090'),
('SlateGrey', '#708090'),
('Snow', '#FFFAFA'),
('SpringGreen', '#00FF7F'),
('SteelBlue', '#4682B4'),
('Tan', '#D2B48C'),
('Teal', '#008080'),
('Thistle', '#D8BFD8'),
('Tomato', '#FF6347'),
('Turquoise', '#40E0D0'),
('Violet', '#EE82EE'),
('Wheat', '#F5DEB3'),
('White', '#FFFFFF'),
('WhiteSmoke', '#F5F5F5'),
('Yellow', '#FFFF00'),
('YellowGreen', '#9ACD32');
COMMIT;

Upvotes: -1

Gordon
Gordon

Reputation: 316939

There is no way to my knowledge to convert HTML color names or CSS color names to their Hex or RGB value in PHP. You'd have to create a map that knows the names (see Wiki article).

Someone has done this work for you already:

Excerpt:

$Colors  =  ARRAY( 
    "black"=>array( "red"=>0x00,  "green"=>0x00,  "blue"=>0x00), 
    "maroon"=>array( "red"=>0x80,  "green"=>0x00,  "blue"=>0x00), 
    // ...
    // more colors inbetween
    // ...
    "wheat"=>array( "red"=>0xF5,  "green"=>0xDE,  "blue"=>0xB3), 
    "whitesmoke"=>array( "red"=>0xF5,  "green"=>0xF5,  "blue"=>0xF5), 
    "yellowgreen"=>array( "red"=>0x9A,  "green"=>0xCD,  "blue"=>0x32)
); 

and then simply get the RGB values via $maroon = $Colors['maroon'];

Further reference:

Upvotes: 8

Luke America
Luke America

Reputation: 301

// converts an html color name to a hex color value
// if the input is not a color name, the original value is returned
// http://wpCodeSnippets.info

function color_name_to_hex($color_name)
{
    // standard 147 HTML color names
    $colors  =  array(
        'aliceblue'=>'F0F8FF',
        'antiquewhite'=>'FAEBD7',
        'aqua'=>'00FFFF',
        'aquamarine'=>'7FFFD4',
        'azure'=>'F0FFFF',
        'beige'=>'F5F5DC',
        'bisque'=>'FFE4C4',
        'black'=>'000000',
        'blanchedalmond '=>'FFEBCD',
        'blue'=>'0000FF',
        'blueviolet'=>'8A2BE2',
        'brown'=>'A52A2A',
        'burlywood'=>'DEB887',
        'cadetblue'=>'5F9EA0',
        'chartreuse'=>'7FFF00',
        'chocolate'=>'D2691E',
        'coral'=>'FF7F50',
        'cornflowerblue'=>'6495ED',
        'cornsilk'=>'FFF8DC',
        'crimson'=>'DC143C',
        'cyan'=>'00FFFF',
        'darkblue'=>'00008B',
        'darkcyan'=>'008B8B',
        'darkgoldenrod'=>'B8860B',
        'darkgray'=>'A9A9A9',
        'darkgreen'=>'006400',
        'darkgrey'=>'A9A9A9',
        'darkkhaki'=>'BDB76B',
        'darkmagenta'=>'8B008B',
        'darkolivegreen'=>'556B2F',
        'darkorange'=>'FF8C00',
        'darkorchid'=>'9932CC',
        'darkred'=>'8B0000',
        'darksalmon'=>'E9967A',
        'darkseagreen'=>'8FBC8F',
        'darkslateblue'=>'483D8B',
        'darkslategray'=>'2F4F4F',
        'darkslategrey'=>'2F4F4F',
        'darkturquoise'=>'00CED1',
        'darkviolet'=>'9400D3',
        'deeppink'=>'FF1493',
        'deepskyblue'=>'00BFFF',
        'dimgray'=>'696969',
        'dimgrey'=>'696969',
        'dodgerblue'=>'1E90FF',
        'firebrick'=>'B22222',
        'floralwhite'=>'FFFAF0',
        'forestgreen'=>'228B22',
        'fuchsia'=>'FF00FF',
        'gainsboro'=>'DCDCDC',
        'ghostwhite'=>'F8F8FF',
        'gold'=>'FFD700',
        'goldenrod'=>'DAA520',
        'gray'=>'808080',
        'green'=>'008000',
        'greenyellow'=>'ADFF2F',
        'grey'=>'808080',
        'honeydew'=>'F0FFF0',
        'hotpink'=>'FF69B4',
        'indianred'=>'CD5C5C',
        'indigo'=>'4B0082',
        'ivory'=>'FFFFF0',
        'khaki'=>'F0E68C',
        'lavender'=>'E6E6FA',
        'lavenderblush'=>'FFF0F5',
        'lawngreen'=>'7CFC00',
        'lemonchiffon'=>'FFFACD',
        'lightblue'=>'ADD8E6',
        'lightcoral'=>'F08080',
        'lightcyan'=>'E0FFFF',
        'lightgoldenrodyellow'=>'FAFAD2',
        'lightgray'=>'D3D3D3',
        'lightgreen'=>'90EE90',
        'lightgrey'=>'D3D3D3',
        'lightpink'=>'FFB6C1',
        'lightsalmon'=>'FFA07A',
        'lightseagreen'=>'20B2AA',
        'lightskyblue'=>'87CEFA',
        'lightslategray'=>'778899',
        'lightslategrey'=>'778899',
        'lightsteelblue'=>'B0C4DE',
        'lightyellow'=>'FFFFE0',
        'lime'=>'00FF00',
        'limegreen'=>'32CD32',
        'linen'=>'FAF0E6',
        'magenta'=>'FF00FF',
        'maroon'=>'800000',
        'mediumaquamarine'=>'66CDAA',
        'mediumblue'=>'0000CD',
        'mediumorchid'=>'BA55D3',
        'mediumpurple'=>'9370D0',
        'mediumseagreen'=>'3CB371',
        'mediumslateblue'=>'7B68EE',
        'mediumspringgreen'=>'00FA9A',
        'mediumturquoise'=>'48D1CC',
        'mediumvioletred'=>'C71585',
        'midnightblue'=>'191970',
        'mintcream'=>'F5FFFA',
        'mistyrose'=>'FFE4E1',
        'moccasin'=>'FFE4B5',
        'navajowhite'=>'FFDEAD',
        'navy'=>'000080',
        'oldlace'=>'FDF5E6',
        'olive'=>'808000',
        'olivedrab'=>'6B8E23',
        'orange'=>'FFA500',
        'orangered'=>'FF4500',
        'orchid'=>'DA70D6',
        'palegoldenrod'=>'EEE8AA',
        'palegreen'=>'98FB98',
        'paleturquoise'=>'AFEEEE',
        'palevioletred'=>'DB7093',
        'papayawhip'=>'FFEFD5',
        'peachpuff'=>'FFDAB9',
        'peru'=>'CD853F',
        'pink'=>'FFC0CB',
        'plum'=>'DDA0DD',
        'powderblue'=>'B0E0E6',
        'purple'=>'800080',
        'red'=>'FF0000',
        'rosybrown'=>'BC8F8F',
        'royalblue'=>'4169E1',
        'saddlebrown'=>'8B4513',
        'salmon'=>'FA8072',
        'sandybrown'=>'F4A460',
        'seagreen'=>'2E8B57',
        'seashell'=>'FFF5EE',
        'sienna'=>'A0522D',
        'silver'=>'C0C0C0',
        'skyblue'=>'87CEEB',
        'slateblue'=>'6A5ACD',
        'slategray'=>'708090',
        'slategrey'=>'708090',
        'snow'=>'FFFAFA',
        'springgreen'=>'00FF7F',
        'steelblue'=>'4682B4',
        'tan'=>'D2B48C',
        'teal'=>'008080',
        'thistle'=>'D8BFD8',
        'tomato'=>'FF6347',
        'turquoise'=>'40E0D0',
        'violet'=>'EE82EE',
        'wheat'=>'F5DEB3',
        'white'=>'FFFFFF',
        'whitesmoke'=>'F5F5F5',
        'yellow'=>'FFFF00',
        'yellowgreen'=>'9ACD32');

    $color_name = strtolower($color_name);
    if (isset($colors[$color_name]))
    {
        return ('#' . $colors[$color_name]);
    }
    else
    {
        return ($color_name);
    }
}

Upvotes: 30

Related Questions