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

86

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

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

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

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

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

матовый
источник

Ответы:

201

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

Мэтью Флашен
источник
1
Остерегайтесь, если вы используете это для URL-адреса (а не его части запроса), преобразованный с косой чертой приведет к тому, что URL-адрес не будет работать. Поэтому, если вам просто нужно позаботиться о пробелах (возможно, для этого URL-адреса), я предлагаю str_replace.
Лукаш Жадек
26

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

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

Альнитак
источник
20

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

Дэвид просит восстановить Монику
источник