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?

mate
fuente

Respuestas:

200

En su lugar, utilice la rawurlencodefunción.

Matthew Flaschen
fuente
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 .

Alnitak
fuente
20

Creo que, si necesita usar la %20variante, tal vez podría usar rawurlencode().

David dice reinstalar a Monica
fuente