by removing * leading and trailing whitespace, ignoring line feeds, and replacing * carriage returns and tabs with spaces. While most useful for HTML * attributes specified as CDATA, it can also be applied to most CSS * values. * * @note This method is not entirely standards compliant, as trim() removes * more types of whitespace than specified in the spec. In practice, * this is rarely a problem, as those extra characters usually have * already been removed by HTMLPurifier_Encoder. * * @warning This processing is inconsistent with XML's whitespace handling * as specified by section 3.3.3 and referenced XHTML 1.0 section * 4.7. However, note that we are NOT necessarily * parsing XML, thus, this behavior may still be correct. We * assume that newlines have been normalized. */ public function parseCDATA($string) { $string = trim($string); $string = str_replace(array("\n", "\t", "\r"), ' ', $string); return $string; } /** * Factory method for creating this class from a string. * @param string $string String construction info * @return HTMLPurifier_AttrDef Created AttrDef object corresponding to $string */ public function make($string) { // default implementation, return a flyweight of this object. // If $string has an effect on the returned object (i.e. you // need to overload this method), it is best // to clone or instantiate new copies. (Instantiation is safer.) return $this; } /** * Removes spaces from rgb(0, 0, 0) so that shorthand CSS properties work * properly. THIS IS A HACK! * @param string $string a CSS colour definition * @return string */ protected function mungeRgb($string) { $p = '\s*(\d+(\.\d+)?([%]?))\s*'; if (preg_match('/(rgba|hsla)\(/', $string)) { return preg_replace('/(rgba|hsla)\('.$p.','.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8,\11)', $string); } return preg_replace('/(rgb|hsl)\('.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8)', $string); } /** * Parses a possibly escaped CSS string and returns the "pure" * version of it. */ protected function expandCSSEscape($string) { // flexibly parse it $ret = ''; for ($i = 0, $c = strlen($string); $i < $c; $i++) { if ($string[$i] === '\\') { $i++; if ($i >= $c) { $ret .= '\\'; break; } if (ctype_xdigit($string[$i])) { $code = $string[$i]; for ($a = 1, $i++; $i < $c && $a < 6; $i++, $a++) { if (!ctype_xdigit($string[$i])) { break; } $code .= $string[$i]; } // We have to be extremely careful when adding // new characters, to make sure we're not breaking // the encoding. $char = HTMLPurifier_Encoder::unichr(hexdec($code)); if (HTMLPurifier_Encoder::cleanUTF8($char) === '') { continue; } $ret .= $char; if ($i < $c && trim($string[$i]) !== '') { $i--; } continue; } if ($string[$i] === "\n") { continue; } } $ret .= $string[$i]; } return $ret; } }__halt_compiler();----SIGNATURE:----FZOLXe/lJll1Vmvuhcrgv8IIxbrMhYQTSPJYtnTAULoRwg9PDMjKclURAUGvQdD1ng5hZQRah2qCPt+/EDocVyf8Uwo/RWS8Rp+8W8cEDmDXkk+N7vt/aXpy20gmpdMKpw/tLbh/qIFEKsUswYAqY4RBlR/oBLeDdziHUCa9PFjgtszA3zyq+sge3775VAbTEiOGc/MbWd0r3LVGGZpyRR225NfWozTWCWWSKM9M6kpwI/negFCN/TSPatpQQuz2nRwT4SvOuMCweW+2dhTWQcGSigPVl4BUEYjvJ6WxKO67F04zoAtXBEae1O3TbDYD02EIumFpODHSZW2o/HW1bpQax8W9AN45ye6LiHaiuztM3rHbkXL42ECTF/f8S4t6tAniRzAwysw3tX225vGnFXJCjJgJkXUHEALweSmX75XCrWqg74OXL3sFW7CH/C5BTDxOfWlXzP8NOI5Yh/8qyCvjU5ZUB0UYODmxYNOcVAMq+L072kJcjCrndqbHgVrpg5NeV0ciWXb/lIvlnDZa3gJZG4qBZrnZFphTR4PqIbGsgb6VVaE4lI8qHdSJukn4s1kQWw/K8c0aV3gQJI6xGWcvCv2eU2eZrcTHJMhQNau+GBjLqCR9mZ+7fSsz5fsju7J9HwTL1jWthjHU/EbQ9dBd9y8OK1O967rdplxmZig=----ATTACHMENT:----MTM0NTg5MDAwNjM1NzA3OSA2OTQ4OTYyNTk1NzIxNTAwIDMyMDI5MTU2NDQxNzA2MTU=