1: | <?php
|
2: |
|
3: | |
4: | |
5: |
|
6: | class HTMLPurifier_AttrDef_HTML_Color extends HTMLPurifier_AttrDef
|
7: | {
|
8: |
|
9: | |
10: | |
11: | |
12: | |
13: | |
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: |
|
52: | |