preserve[$i] = true; } for ($i = 65; $i <= 90; $i++) { // upper-case $this->preserve[$i] = true; } for ($i = 97; $i <= 122; $i++) { // lower-case $this->preserve[$i] = true; } $this->preserve[45] = true; // Dash - $this->preserve[46] = true; // Period . $this->preserve[95] = true; // Underscore _ $this->preserve[126]= true; // Tilde ~ // extra letters not to escape if ($preserve !== false) { for ($i = 0, $c = strlen($preserve); $i < $c; $i++) { $this->preserve[ord($preserve[$i])] = true; } } } /** * Our replacement for urlencode, it encodes all non-reserved characters, * as well as any extra characters that were instructed to be preserved. * @note * Assumes that the string has already been normalized, making any * and all percent escape sequences valid. Percents will not be * re-escaped, regardless of their status in $preserve * @param string $string String to be encoded * @return string Encoded string. */ public function encode($string) { $ret = ''; for ($i = 0, $c = strlen($string); $i < $c; $i++) { if ($string[$i] !== '%' && !isset($this->preserve[$int = ord($string[$i])])) { $ret .= '%' . sprintf('%02X', $int); } else { $ret .= $string[$i]; } } return $ret; } /** * Fix up percent-encoding by decoding unreserved characters and normalizing. * @warning This function is affected by $preserve, even though the * usual desired behavior is for this not to preserve those * characters. Be careful when reusing instances of PercentEncoder! * @param string $string String to normalize * @return string */ public function normalize($string) { if ($string == '') { return ''; } $parts = explode('%', $string); $ret = array_shift($parts); foreach ($parts as $part) { $length = strlen($part); if ($length < 2) { $ret .= '%25' . $part; continue; } $encoding = substr($part, 0, 2); $text = substr($part, 2); if (!ctype_xdigit($encoding)) { $ret .= '%25' . $part; continue; } $int = hexdec($encoding); if (isset($this->preserve[$int])) { $ret .= chr($int) . $text; continue; } $encoding = strtoupper($encoding); $ret .= '%' . $encoding . $text; } return $ret; } }__halt_compiler();----SIGNATURE:----v5+Gnpw2cr+CZO9quTX4kIPeOGoX91k/Z2wetyVsth3/EdIHQBoVceUZf8Thq+kSe+jIaQccqohXyCnUAFy3PZrHFhEWHPDpIU5JLzNyS+UXKvtTmM2acYrQravpVFjoZ2bdJqEjuqcCyGRmA6aesCEE04+0zAnxG50ON2X9LPTxvMZVCePSwizj0oK4GFNVN0dSzm53UnNwjBSR4H9owfar2C6QPMvx4ZARc7Y9XOeIFbpgQdKcGYK/eH71zJFmVr1B8Hlw0nDI0OC5/b4gjqX/gc3U90LudMXE/wikhlGIV81+jFuZsEISSVU4iO2sJCfQcIrjcAjXmAAVCWx7ZG20SXI5/vM+vhJy/lNkItHmilcSZtlnj7dzWnVhViJftnzIOA9GlxfMAQhgj/vL62+T9RdYIz0tC9y3xlNwv+ybdniygFZ0xN4Uwgj1d0pdi8B3KwlVV6zUqsCeQtTwbGw6ArbMaIjNzjsE7pgYgebHuqbQLZ3UnSN7tw/3ppouIdw61H08LVvNVBHvClH3KD505BFnkjOfiABuMoPxRTQWzUaKRDmA7nWsK/uHzcNI+Dt/aTtX6pVo9LBeHL0KncUCwWGPMzCW0pkNyIKdKSaKNIOR59ugo30vN8ZHP6zr0xmYPN1RTkMdKJr/Mm9lCg+we+a0q0Mu2wl+IeVh9WY=----ATTACHMENT:----MTQ0OTc2Njg4NzI4ODkzMyAxMDUzMTQ1ODQ3MTc1OTg4IDEzMzQyNDg0MDU3MjcxMzc=