PHP: ¿convertir espacios en una cadena en% 20?


84

¿Cómo puedo convertir espacios en una cadena en %20?

Aquí está mi intento:

$str = "What happens here?";
echo urlencode($str);

La salida es "What+happens+here%3F", por lo que los espacios no se representan como %20.

¿Qué estoy haciendo mal?

Respuestas:


200

En su lugar, utilice la rawurlencodefunción.


1
Tenga cuidado si usa esto para URL (no su parte de consulta), convertido con barra diagonal hará que la URL no funcione. Entonces, si solo necesita cuidar los espacios (tal vez para esa URL), sugiero str_replace.
Lukáš Řádek

26

El signo más es la codificación histórica de un carácter de espacio en los parámetros de URL, como se documenta en la ayuda de la urlencode()función.

Esa misma página contiene la respuesta que necesita; utilícela rawurlencode()en su lugar para obtener la codificación compatible con RFC 3986 .


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.