Разница между функциями rawurlencode и urlencode в PHP заключается в наборе кодируемых символов и способе обработки пробелов. 3
urlencode() заменяет все неалфавитно-цифровые символы, кроме -, _, и ., знаком процента, за которым следуют две шестнадцатеричные цифры. 3 Пробелы при этом кодируются как знак «+». 45 Функция подходит для строк, которые будут использоваться в строке запроса URL (после «?»). 5
rawurlencode() заменяет все неалфавитно-цифровые символы, кроме -, _, ., и ~, знаком процента, за которым следуют две шестнадцатеричные цифры. 3 Пробелы при этом кодируются как %20. 45 Функция предназначена для строк, которые будут использоваться в строке пути URL (перед «?»). 5
Таким образом, rawurlencode() предпочтительнее для случаев, когда важна совместимость с другими системами, так как она следует стандарту RFC 3986, широко принятому браузерами и веб-сервисами. 2 urlencode() же лучше подходит для устаревших систем, которые ожидают кодировку строки запроса в стиле формы. 2