cyberfly
cyberfly

Reputation: 5888

PHP urlencode() and whitespace

I have this string to be encoded (with line break)

Sender ID
Sender ID
Sender ID

When using this urlencode generator, I get the desired output which is

Sender%20ID%0ASender%20ID%0ASender%20ID

However when i using php urlencode() i get this output

Sender+ID%0D%0ASender+ID%0D%0ASender+ID

When using the php rawurlencode() i get this output

Sender%20ID%0D%0ASender%20ID%0D%0ASender%20ID

How to achieve the output same as the generator? I need it to be same since Blackberry phone will properly show line break only if the urlencode for line break is %0A (i am working on a sms system).

Right now the only solution i can think is to search for the %0D%0A and replace with %0A

Upvotes: 4

Views: 8186

Answers (1)

cwallenpoole
cwallenpoole

Reputation: 82078

You have a Windows line ending which is being translated directly by PHP and ignored by your generator tool. The easy way to get rid of it is to simply:

str_replace( "\r\n", "\n", $input );

%0D refers to the 13th ASCII character: \r. Since this is immediately followed by %0A (the \n) it is clear that you have the MS line ending (\r\n) instead of the *nix line ending (\n) and that the urlencode generator is using the *nix approach.

Upvotes: 4

Related Questions