112

How can I convert spaces in string into %20?

Here is my attempt:

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

The output is "What+happens+here%3F", so the spaces are not represented as %20.

What am I doing wrong?

3 Answers 3

267

Use the rawurlencode function instead.

1
  • 4
    Beware if you use this for url (not its query part), converted slashed will cause the url not to work. So if you just need to take care of spaces (maybe for that URL), I suggest str_replace. Commented Oct 10, 2019 at 11:04
33

The plus sign is the historic encoding for a space character in URL parameters, as documented in the help for the urlencode() function.

That same page contains the answer you need - use rawurlencode() instead to get RFC 3986 compatible encoding.

29

I believe that, if you need to use the %20 variant, you could perhaps use rawurlencode().

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.