2010-08-07 7 views
28

Napisałem niestandardowy parser xml i jego blokowanie na znakach specjalnych. Więc naturalnie wprowadziłem je do mojej bazy danych.Javascript równoważny urldecode php()

Nie mogę znaleźć odpowiednika dla php: urldecode().

Czy są jakieś rozszerzenia dla jquery lub javascript, które mogą to osiągnąć?

Odpowiedz

60

Możesz użyć the decodeURIComponent function, aby przekonwertować% xx na znaki. Jednak aby przekształcić + w spacje, musisz je zastąpić w dodatkowym kroku.

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

Doskonała odpowiedź. Zmodyfikowałem go nieznacznie, aby pobrać dowolną zmienną: 'funkcja urldecode (str) { if (typeof str! =" String ") { return str; } return decodeURIComponent (str.replace (/ \ +/g, '')); } ' –

-1

Myślę, że potrzebujesz funkcji decodeURI.

+0

Nie do końca (patrz odpowiedź Kenny'ego). –

7

Sprawdź to jeden

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

Podczas miłego uzupełnienia do już zasugerowanych odpowiedzi, prawdopodobnie powinieneś zawrzeć kilka sugestii dlaczego byłby lepszy/jaki kompromis jest przeciwko innym opcjom wymienionym tutaj. – EdC

+0

Z mojego rozumowania zamieni to '+ 'na'% 20', który jest zakodowaną wartością spacji (która następnie zostaje dekodowana przez decodeURIComponent). Teoretycznie zrobi to tak samo, jak zaakceptowana odpowiedź, po prostu inny sposób robienia tego. – Matt