Quel est le meilleur utilitaire de décodage d'URL JavaScript? L'encodage serait bien aussi et travailler bien avec jQuery est un bonus supplémentaire.
Quel est le meilleur utilitaire de décodage d'URL JavaScript? L'encodage serait bien aussi et travailler bien avec jQuery est un bonus supplémentaire.
Réponses:
J'ai également utilisé encodeURIComponent () et decodeURIComponent () .
Voici une fonction complète (tirée de PHPJS ):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
Utilisez ceci
unescape(str);
Je ne suis pas un grand programmeur JS, j'ai tout essayé et cela a très bien fonctionné!
decodeURIComponent(mystring);
vous pouvez obtenir les paramètres passés en utilisant ce bit de code:
//parse URL to get values: var i = getUrlVars()["i"];
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
Ou ce one-liner pour obtenir les paramètres:
location.search.split("your_parameter=")[1]
window.location.search
place.
//How decodeURIComponent Works
function proURIDecoder(val)
{
val=val.replace(/\+/g, '%20');
var str=val.split("%");
var cval=str[0];
for (var i=1;i<str.length;i++)
{
cval+=String.fromCharCode(parseInt(str[i].substring(0,2),16))+str[i].substring(2);
}
return cval;
}
document.write(proURIDecoder(window.location.href));
Si vous êtes responsable de l'encodage des données en PHP en utilisant urlencode, le rawurlencode de PHP fonctionne avec le decodeURIComponent de JavaScript sans avoir besoin de remplacer le caractère +.
Voici ce que j'ai utilisé:
En JavaScript:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
En PHP:
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
Vous pouvez également l'essayer en ligne ici: http://www.mynewsfeed.x10.mx/articles/index.php?id=17
var uri = "my test.asp?name=ståle&car=saab";
console.log(encodeURI(uri));
decodeURIComponent()
c'est bien, mais vous ne voulez jamais utiliser encodeURIComponent()
directement. Cela ne s'échapper les caractères réservés comme *
, !
, '
, (
et )
. Consultez RFC3986 , où cela est défini, pour plus d'informations à ce sujet. La documentation du Mozilla Developer Network donne à la fois une bonne explication et une solution. Explication...
Pour être plus strict dans le respect de la RFC 3986 (qui réserve!, ', (,) Et *), même si ces caractères n'ont pas d'utilisation formalisée de délimitation d'URI, les éléments suivants peuvent être utilisés en toute sécurité:
Solution...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
Au cas où vous n'êtes pas sûr, consultez une bonne démo fonctionnelle sur JSBin.com . Comparez cela avec une mauvaise démonstration fonctionnelle sur JSBin.com en utilisant encodeURIComponent()
directement .
Bons résultats de code:
thing%2athing%20thing%21
Un code incorrect résulte de encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
etdecodeURIComponent
?