Hay veces en que la función de javascript escape() no es suficiente, como por ejemplo si hay que codificar ‘?’. No sé exactamente cuando ni donde encontré esta función que imita el urldecode de PHP pero migrada a javascript, espero que os sea tan útil como a mi.
function urlencode( str ) {
var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
var ret = str.toString();
var replacer = function(search, replace, str) {
var tmp_arr = [];
tmp_arr = str.split(search);
return tmp_arr.join(replace);
};
// The histogram is identical to the one in urldecode.
histogram['!'] = '%21';
histogram['%20'] = '+';
// Begin with encodeURIComponent, which most resembles PHP's encoding functions
ret = encodeURIComponent(ret);
for (search in histogram) {
replace = histogram[search];
ret = replacer(search, replace, ret) // Custom replace. No regexing
}
// Uppercase for full PHP compatibility
return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
return "%"+m2.toUpperCase();
});
return ret;
}
octubre 8th, 2009 at 12:48
Me ha sido muy útil.
Muchas gracias!
noviembre 15th, 2009 at 00:17
Muchas gracias! he usado la funcion en http://www.niavatar.com (versión china de http://www.armatudisplay.com), porque la que tenía no codificada caracteres chinos.
Un saludo!!
enero 28th, 2010 at 10:20
muy util
gracias
marzo 3rd, 2010 at 19:51
Diosss, la de problemas que he tenido hasta que he dado con esta función..
I love you
PD: fuck JS