Avatar ·

¿Cuál es la diferencia entre urlencode y rawurlencode en PHP y cuándo usar cada uno?

¡Hola a todos! Soy un desarrollador PHP principiante y tengo confusión con dos funciones: `urlencode()` y `rawurlencode()`. Sé que ambas se usan para codificar URLs, pero no puedo entender cuál es la diferencia fundamental entre ellas y qué opción es más correcta usar. Supongamos que necesito pasar una cadena con caracteres cirílicos y espacios en una 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 ``` Noté que `urlencode` reemplaza el espacio con `+`, mientras que `rawurlencode` lo reemplaza con `%20`. Pero cuando leí la documentación de RFC 3986, dice que el espacio debe codificarse como `%20`. ¿Por qué entonces existe la función `urlencode` que usa `+`? ¿Es una versión obsoleta? ¿O es una característica de PHP? Me interesa especialmente saber qué opción usar para: 1. Formar parámetros GET en la cadena de consulta 2. Codificar