See Release Notes
Long Term Support Release
1 <?php 2 3 // Enum = Enumerated 4 /** 5 * Validates a keyword against a list of valid values. 6 * @warning The case-insensitive compare of this function uses PHP's 7 * built-in strtolower and ctype_lower functions, which may 8 * cause problems with international comparisons 9 */ 10 class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef 11 { 12 13 /** 14 * Lookup table of valid values. 15 * @type array 16 * @todo Make protected 17 */ 18 public $valid_values = array(); 19 20 /** 21 * Bool indicating whether or not enumeration is case sensitive. 22 * @note In general this is always case insensitive. 23 */ 24 protected $case_sensitive = false; // values according to W3C spec 25 26 /** 27 * @param array $valid_values List of valid values 28 * @param bool $case_sensitive Whether or not case sensitive 29 */ 30 public function __construct($valid_values = array(), $case_sensitive = false) 31 { 32 $this->valid_values = array_flip($valid_values); 33 $this->case_sensitive = $case_sensitive; 34 } 35 36 /** 37 * @param string $string 38 * @param HTMLPurifier_Config $config 39 * @param HTMLPurifier_Context $context 40 * @return bool|string 41 */ 42 public function validate($string, $config, $context) 43 { 44 $string = trim($string); 45 if (!$this->case_sensitive) { 46 // we may want to do full case-insensitive libraries 47 $string = ctype_lower($string) ? $string : strtolower($string); 48 } 49 $result = isset($this->valid_values[$string]); 50 51 return $result ? $string : false; 52 } 53 54 /** 55 * @param string $string In form of comma-delimited list of case-insensitive 56 * valid values. Example: "foo,bar,baz". Prepend "s:" to make 57 * case sensitive 58 * @return HTMLPurifier_AttrDef_Enum 59 */ 60 public function make($string) 61 { 62 if (strlen($string) > 2 && $string[0] == 's' && $string[1] == ':') { 63 $string = substr($string, 2); 64 $sensitive = true; 65 } else { 66 $sensitive = false; 67 } 68 $values = explode(',', $string); 69 return new HTMLPurifier_AttrDef_Enum($values, $sensitive); 70 } 71 } 72 73 // vim: et sw=4 sts=4
title
Description
Body
title
Description
Body
title
Description
Body
title
Body