1 <?php 2 3 /** 4 * Validates a color according to the HTML spec. 5 */ 6 class HTMLPurifier_AttrDef_HTML_Color extends HTMLPurifier_AttrDef 7 { 8 9 /** 10 * @param string $string 11 * @param HTMLPurifier_Config $config 12 * @param HTMLPurifier_Context $context 13 * @return bool|string 14 */ 15 public function validate($string, $config, $context) 16 { 17 static $colors = null; 18 if ($colors === null) { 19 $colors = $config->get('Core.ColorKeywords'); 20 } 21 22 $string = trim($string); 23 24 if (empty($string)) { 25 return false; 26 } 27 $lower = strtolower($string); 28 if (isset($colors[$lower])) { 29 return $colors[$lower]; 30 } 31 if ($string[0] === '#') { 32 $hex = substr($string, 1); 33 } else { 34 $hex = $string; 35 } 36 37 $length = strlen($hex); 38 if ($length !== 3 && $length !== 6) { 39 return false; 40 } 41 if (!ctype_xdigit($hex)) { 42 return false; 43 } 44 if ($length === 3) { 45 $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2]; 46 } 47 return "#$hex"; 48 } 49 } 50 51 // vim: et sw=4 sts=4
title
Description
Body
title
Description
Body
title
Description
Body
title
Body