web-dev-qa-db-fra.com

PHP: convertir des espaces dans une chaîne en% 20?

Comment puis-je convertir des espaces d'une chaîne en %20?

Voici ma tentative:

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

La sortie est "What+happens+here%3F", les espaces ne sont donc pas représentés par %20.

Qu'est-ce que je fais mal?

76
matt

Utilisez plutôt la fonction rawurlencode.

181
Matthew Flaschen

Le signe plus représente l'historique de codage d'un caractère d'espacement dans les paramètres d'URL, sous la forme documenté dans l'aide pour la fonction urlencode().

Cette même page contient la réponse dont vous avez besoin - utilisez rawurlencode() à la place pour obtenir le codage compatible RFC 3986 .

25
Alnitak

Je crois que, si vous devez utiliser la variante %20, Vous pouvez peut-être utiliser rawurlencode() .

19
David Thomas