2010-08-07 11 views
28

Ho scritto un parser xml personalizzato e il suo blocco su caratteri speciali. Quindi naturalmente li ho codificati con l'url nel mio database.Javascript equivalente a urldecode di php()

Non riesco a trovare un equivalente a urldecode() di php.

Esistono estensioni per jquery o javascript che possono raggiungere questo obiettivo?

risposta

60

È possibile utilizzare the decodeURIComponent function per convertire il% xx in caratteri. Tuttavia, per convertire + in spazi è necessario sostituirli in un passaggio aggiuntivo.

function urldecode(url) { 
    return decodeURIComponent(url.replace(/\+/g, ' ')); 
} 
+3

Ottima risposta. Ho modificato leggermente per prendere qualsiasi variabile: 'function urldecode (str) { if (typeof str! =" Stringa ") { return str; } return decodeURIComponent (str.replace (/ \ +/g, '')); } ' –

-1

Penso che sia necessaria la funzione decodeURI.

+0

Non del tutto (vedi risposta di Kenny). –

7

Partenza questo

function urldecode (str) { 
    return decodeURIComponent((str + '').replace(/\+/g, '%20')); 
} 
+2

Sebbene sia una buona aggiunta alle risposte già suggerite, probabilmente dovresti includere qualche suggerimento sul perché sarebbe meglio/quale sia il trade off rispetto alle altre opzioni elencate qui. – EdC

+0

Dalla mia comprensione ciò trasformerà '+' in '% 20', che è il valore codificato di uno spazio (che poi viene decodificato da decodeURIComponent). Quindi teoricamente questo farà lo stesso della risposta accettata, solo un modo diverso di farlo. – Matt