1 <?php 2 3 /** 4 * Validates the HTML type length (not to be confused with CSS's length). 5 * 6 * This accepts integer pixels or percentages as lengths for certain 7 * HTML attributes. 8 */ 9 10 class HTMLPurifier_AttrDef_HTML_Length extends HTMLPurifier_AttrDef_HTML_Pixels 11 { 12 13 /** 14 * @param string $string 15 * @param HTMLPurifier_Config $config 16 * @param HTMLPurifier_Context $context 17 * @return bool|string 18 */ 19 public function validate($string, $config, $context) 20 { 21 $string = trim($string); 22 if ($string === '') { 23 return false; 24 } 25 26 $parent_result = parent::validate($string, $config, $context); 27 if ($parent_result !== false) { 28 return $parent_result; 29 } 30 31 $length = strlen($string); 32 $last_char = $string[$length - 1]; 33 34 if ($last_char !== '%') { 35 return false; 36 } 37 38 $points = substr($string, 0, $length - 1); 39 40 if (!is_numeric($points)) { 41 return false; 42 } 43 44 $points = (int)$points; 45 46 if ($points < 0) { 47 return '0%'; 48 } 49 if ($points > 100) { 50 return '100%'; 51 } 52 return ((string)$points) . '%'; 53 } 54 } 55 56 // vim: et sw=4 sts=4
title
Description
Body
title
Description
Body
title
Description
Body
title
Body