2010-08-07 4 views
28

Ich schrieb einen benutzerdefinierten XML-Parser und seine Sperrung auf Sonderzeichen. Also habe ich sie natürlich in meine Datenbank übertragen.Javascript gleichbedeutend mit PHP urldecode()

Ich kann nicht scheinen, ein Äquivalent zu php urldecode() zu finden.

Gibt es Erweiterungen für jquery oder Javascript, die dies erreichen können?

Antwort

60

Sie könnten the decodeURIComponent function verwenden, um% XX in Zeichen zu konvertieren. Um + in Leerzeichen zu konvertieren, müssen Sie sie in einem zusätzlichen Schritt ersetzen.

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

Ausgezeichnete Antwort. Ich änderte es geringfügig, um irgendeine Variable zu nehmen: 'Funktion urldecode (str) { if (typeof str! =" Zeichenkette ") { Rückkehr str; } Rückgabe decodeURIComponent (str.replace (/ \ +/g, '')); } ' –

-1

Ich denke, dass Sie die decodeURI Funktion benötigen.

+0

Nicht ganz (siehe Kennys Antwort). –

7

Schauen Sie sich dieses

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

Während eine nette Ergänzung zu den bereits vorgeschlagenen Antworten, sollten Sie wahrscheinlich einige Vorschläge enthalten, warum es besser wäre/was der Kompromiss gegen die anderen hier aufgeführten Optionen ist. – EdC

+0

Aus meinem Verständnis wird dies '+' in '% 20' verwandeln, was der kodierte Wert eines Raumes ist (der dann von decodeURIComponent dekodiert wird). Theoretisch wird dies das gleiche wie die akzeptierte Antwort tun, nur eine andere Art, dies zu tun. – Matt

Verwandte Themen