PHP: przekonwertować spacje w łańcuchu na% 20?


84

Jak mogę zamienić spacje w ciągu na %20?

Oto moja próba:

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

Wynik to "What+happens+here%3F", więc spacje nie są reprezentowane jako %20.

Co ja robię źle?

Odpowiedzi:


200

rawurlencodeZamiast tego użyj funkcji.


1
Uważaj, jeśli użyjesz tego dla adresu URL (a nie jego części zapytania), przekonwertowany ukośnik spowoduje, że adres URL nie będzie działał. Więc jeśli potrzebujesz tylko zadbać o spacje (może dla tego adresu URL), sugeruję str_replace.
Lukáš Řádek

26

Znak plus to historyczne kodowanie znaku spacji w parametrach adresu URL, zgodnie z opisem w pomocy do urlencode()funkcji.

Ta sama strona zawiera odpowiedź, której potrzebujesz - użyj rawurlencode()zamiast tego, aby uzyskać kodowanie zgodne z RFC 3986 .


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.