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