PHP: преобразовать пробелы в строку в %20?

Как преобразовать пробелы в строку в %20?

Вот моя попытка:

$str = "What happens here?";
echo urlencode($str);

Вывод "What+happens+here%3F", поэтому пробелы не представлены как %20.

Что я делаю неправильно?

Ответ 1

Используйте вместо этого функцию rawurlencode.

Ответ 2

Знак плюса - это историческое кодирование символа пробела в параметрах URL, а задокументировано в справке для функции urlencode().

Эта же страница содержит ответ, который вам нужен - вместо этого используйте rawurlencode(), чтобы получить RFC 3986.

Ответ 3

Я считаю, что если вам нужно использовать вариант %20, вы можете использовать rawurlencode().