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?
Utilisez plutôt la fonction rawurlencode
.
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 .
Je crois que, si vous devez utiliser la variante %20
, Vous pouvez peut-être utiliser rawurlencode()
.