2012-07-30 10 views
9

tengo la siguiente URL: $url = 'http://mysite.com/?p=welcome&x=1&y=2';cómo decodificar el & desde una URL para que la cabecera() funciona (urldecode no funciona)

necesito para decodificar de manera que header("Location: $url"); realmente funciona.

Sin embargo, el uso de urldecode($url) no está funcionando porque es no decodificar el & ->& por lo que el navegador está siendo redirigido a http://mysite.com/?p=welcome&x=1&y=2 el que falla.

lo necesito para decodificar por lo que parece: http://mysite.com/?p=welcome&x=1&y=2

¿Cómo se hace eso?

+1

En caso de que lo anterior NO sea un error tipográfico: debe ser 'header (" Ubicación: $ url ")' - tenga en cuenta que ':'. –

+0

@Marc B: Gracias, solo fue un error tipográfico aquí, no en mi script. Solo lo arregle arriba. – ProgrammerGirl

Respuesta

19

intento con htmlspecialchars_decode

echo htmlspecialchars_decode('http://mysite.com/?p=welcome&x=1&y=2'); 
//"http://mysite.com/?p=welcome&x=1&y=2" 
+2

¿Cuál es la diferencia entre 'htmlspecialchars_decode' que está recomendando y el' html_entity_decode' que todos los demás recomiendan? ¿Cuál debería usar? – ProgrammerGirl

+1

@Programmer 'html_entity_decode' es para la decodificación de entidades pesadas, como convertir' ← 'en' ← '. 'htmlspecialchars_decode' es solo para descifrar html escapado, decodifica solo los caracteres necesarios para escapar de html. 'htmlspecialchars_decode' es semánticamente más correcto para usar aquí imo. – Esailija

+1

Puede ver un ejemplo aquí: http://codepad.org/Mv3vtrYZ – Esailija

4

me gustaría probar este:

$url = html_entity_decode($url); 
header("Location: $url"); 

tomado de http://php.net/manual/en/function.html-entity-decode.php

me gustaría hacerlo porque su $url no es una URL codificada, pero codificados en HTML, con html Caracteres especiales reemplazados con la entidad html correspondiente.

Cuestiones relacionadas