1 <?php 2 3 /** 4 * Validates a MultiLength as defined by the HTML spec. 5 * 6 * A multilength is either a integer (pixel count), a percentage, or 7 * a relative number. 8 */ 9 class HTMLPurifier_AttrDef_HTML_MultiLength extends HTMLPurifier_AttrDef_HTML_Length 10 { 11 12 /** 13 * @param string $string 14 * @param HTMLPurifier_Config $config 15 * @param HTMLPurifier_Context $context 16 * @return bool|string 17 */ 18 public function validate($string, $config, $context) 19 { 20 $string = trim($string); 21 if ($string === '') { 22 return false; 23 } 24 25 $parent_result = parent::validate($string, $config, $context); 26 if ($parent_result !== false) { 27 return $parent_result; 28 } 29 30 $length = strlen($string); 31 $last_char = $string[$length - 1]; 32 33 if ($last_char !== '*') { 34 return false; 35 } 36 37 $int = substr($string, 0, $length - 1); 38 39 if ($int == '') { 40 return '*'; 41 } 42 if (!is_numeric($int)) { 43 return false; 44 } 45 46 $int = (int)$int; 47 if ($int < 0) { 48 return false; 49 } 50 if ($int == 0) { 51 return '0'; 52 } 53 if ($int == 1) { 54 return '*'; 55 } 56 return ((string)$int) . '*'; 57 } 58 } 59 60 // vim: et sw=4 sts=4
title
Description
Body
title
Description
Body
title
Description
Body
title
Body