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

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

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

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

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

что я делаю не так?

3 ответов


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


знак плюс-это историческая кодировка для символа пробела в параметрах URL, как задокументированы в справке на .

эта же страница содержит ответ, который вам нужен-use и RFC 3986 совместимое кодирование.


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