Qual é a diferença entre urlencode e rawurlencode no PHP e quando usar cada um?
Olá a todos! Sou um desenvolvedor PHP iniciante e fiquei confuso com duas funções: `urlencode()` e `rawurlencode()`. Sei que ambas são usadas para codificar URLs, mas não consigo entender qual é a diferença fundamental entre elas e qual opção é mais correta usar.
Digamos que eu precise passar uma string com cirílico e espaços em uma 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
```
Notei que `urlencode` substitui o espaço por `+`, enquanto `rawurlencode` substitui por `%20`. Mas quando li a documentação RFC 3986, ela diz que o espaço deve ser codificado como `%20`. Por que então existe a função `urlencode` que usa `+`? É uma versão desatualizada? Ou é uma peculiaridade do PHP?
Estou especialmente interessado em saber qual opção usar para:
1. Formar parâmetros GET na string de consulta
2. Codificar
No answers yet.
Faça login para deixar uma resposta
Blogs