Avatar ·

Quelle est la différence entre urlencode et rawurlencode en PHP et quand utiliser quoi ?

Bonjour à tous ! Je suis un développeur PHP débutant, et je suis confus au sujet de deux fonctions : `urlencode()` et `rawurlencode()`. Je sais que les deux sont utilisées pour encoder des URL, mais je n'arrive pas à comprendre quelle est la différence fondamentale entre elles et quelle option est la plus correcte à utiliser. Supposons que je doive passer une chaîne avec des caractères cyrilliques et des espaces dans une URL : ```php $string = "Привет мир!"; echo urlencode($string); // %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82+%D0%BC%D0%B8%D1%80%21 echo rawurlencode($string); // %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%BC%D0%B8%D1%80%21 ``` J'ai remarqué que `urlencode` remplace l'espace par `+`, tandis que `rawurlencode` le remplace par `%20`. Mais quand j'ai lu la documentation RFC 3986, il est dit que l'espace doit être encodé comme `%20`. Pourquoi alors existe-t-il une fonction `urlencode` qui utilise `+` ? Est-ce une version obsolète ? Ou est-ce une particularité de PHP ? Je suis particulièrement intéressé par savoir quelle option utiliser pour : 1. Former des paramètres GET dans une query string 2. Encoder