2010-03-31 7 views
5

Je ne sais pas si c'est possible mais je voudrais créer une sorte de fonction où vous passez dans une chaîne comme "jaune" ou "vert" et il retourne son code hexadécimal ou la gamme de codes hexadécimaux verts ou jaunes s'intégrer dans.Comment convertir une couleur de chaîne en code hexadécimal ou en valeur RVB?

Est-ce possible en PHP? Si ce n'est pas possible, je suis prêt à essayer tout ce qui peut le faire!

Merci à tous

+0

il est possible en PHP, si vous avez une base de données qui contiennent toutes ces couleurs. Donc, vous devez juste obtenir cette base de données quelque part –

+0

Vous pouvez utiliser [les 16 couleurs de base définies dans la norme HTML] (http://www.w3.org/TR/html4/types.html#h-6.5) . – legoscia

+0

vous pouvez trouver tous les noms de couleurs et leur valeur hexadécimale sur ce site: http://www.iconbazaar.com/color_tables/lepihce.html avec quelques regexp il devrait être possible de l'utiliser pour construire une "base de données" de toute sorte . EDIT: http://answers.oreilly.com/topic/453-color-names-and-rgb-values-with-wide-browser-support/ aussi une belle liste, semble être plus facile à importer par exemple. CSV. – Rufinus

Répondre

8

Il n'y a aucun moyen de ma connaissance pour convertir HTML color names ou CSS color names à leur valeur hexadécimale ou RVB en PHP. Vous devez créer une carte qui connaît les noms (voir l'article Wiki).

Quelqu'un a fait ce travail pour vous déjà:

Extrait:

$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) 
); 

puis simplement obtenir les valeurs RVB via $maroon = $Colors['maroon'];

référence plus :

+0

Wow, génial! Juste besoin de l'enrouler autour d'un autre RGB à la fonction de convertisseur hexadécimal! ... Ou juste l'utiliser comme il est! – Abs

+0

Dans le cas où quelqu'un aurait besoin de cette fonction, le premier contributeur (Halit YEL) a écrit une super fonction pour rgb en hexadécimal sur le site php.net: http://php.net/manual/fr/function.hexdec.php – Abs

10
 
// 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); 
    } 
} 
+0

Merci pour juste poster cette liste/fonction pratique. – Ideogram

Questions connexes