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 .


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.