]>
Commit | Line | Data |
---|---|---|
f45a286b AD |
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 | public function validate($string, $config, $context) { | |
10 | ||
11 | static $colors = null; | |
f4f0f80d | 12 | if ($colors === null) $colors = $config->get('Core.ColorKeywords'); |
f45a286b AD |
13 | |
14 | $string = trim($string); | |
15 | ||
16 | if (empty($string)) return false; | |
dd205fba | 17 | if (isset($colors[strtolower($string)])) return $colors[$string]; |
f45a286b AD |
18 | if ($string[0] === '#') $hex = substr($string, 1); |
19 | else $hex = $string; | |
20 | ||
21 | $length = strlen($hex); | |
22 | if ($length !== 3 && $length !== 6) return false; | |
23 | if (!ctype_xdigit($hex)) return false; | |
24 | if ($length === 3) $hex = $hex[0].$hex[0].$hex[1].$hex[1].$hex[2].$hex[2]; | |
25 | ||
26 | return "#$hex"; | |
27 | ||
28 | } | |
29 | ||
30 | } | |
31 | ||
32 | // vim: et sw=4 sts=4 |