note 84197 deleted from function.urldecode by danbrown

From: Date: Fri, 13 Aug 2010 15:32:03 +0000
Subject: note 84197 deleted from function.urldecode by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-171653@lists.php.net to get a copy of this message
Note Submitter: ignacio dot javier dot igjav at gmail dot com ---- /* Original source has lost, seems due to a utf8-ascii-utf8 translation, 2 relevant characters in 2 lines of the function, character à in lines 8 and 21. This is the correct version: */ function crossUrlDecode($source) { $decodedStr = ''; $pos = 0; $len = strlen($source); while ($pos < $len) { $charAt = substr ($source, $pos, 1); if ($charAt == 'Ã') { $char2 = substr($source, $pos, 2); $decodedStr .= htmlentities(utf8_decode($char2),ENT_QUOTES,'ISO-8859-1'); $pos += 2; } elseif(ord($charAt) > 127) { $decodedStr .= "&#".ord($charAt).";"; $pos++; } elseif($charAt == '%') { $pos++; $hex2 = substr($source, $pos, 2); $dechex = chr(hexdec($hex2)); if($dechex == 'Ã') { $pos += 2; if(substr($source, $pos, 1) == '%') { $pos++; $char2a = chr(hexdec(substr($source, $pos, 2))); $decodedStr .= htmlentities(utf8_decode($dechex . $char2a),ENT_QUOTES,'ISO-8859-1'); } else { $decodedStr .= htmlentities(utf8_decode($dechex)); } } else { $decodedStr .= $dechex; } $pos += 2; } else { $decodedStr .= $charAt; $pos++; } } return $decodedStr; }

« previous php.notes (#171653) next »