2010-08-07 18 views
28

Escribí un analizador xml personalizado y su bloqueo en caracteres especiales. Así que, naturalmente, los he codificado en mi base de datos.Javascript equivalente a urldecode de php()

Parece que no puedo encontrar un equivalente a urldecode() de php.

¿Hay alguna extensión para jquery o javascript que pueda lograr esto?

Respuesta

60

Puede usar the decodeURIComponent function para convertir el% xx en caracteres. Sin embargo, para convertir + en espacios, debe reemplazarlos en un paso adicional.

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

Excelente respuesta. Lo modifiqué ligeramente para tomar cualquier variable: 'function urldecode (str) { if (typeof str! =" Cadena ") { return str; } return decodeURIComponent (str.replace (/ \ +/g, '')); } ' –

-1

Creo que necesita la función decodeURI.

+0

No del todo (véase la respuesta de Kenny). –

7

Salida éste

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

Si bien es una buena adición a las respuestas ya sugeridas, probablemente deba incluir alguna sugerencia de por qué sería mejor/cuál es la compensación en comparación con las otras opciones enumeradas aquí. – EdC

+0

Según tengo entendido, esto convertirá '+' en '% 20', que es el valor codificado de un espacio (que luego decodifica decodeURIComponent). Entonces, teóricamente, esto hará lo mismo que la respuesta aceptada, solo una manera diferente de hacerlo. – Matt