2011-09-06 39 views
4

我有這樣的字符串將被編碼(與線斷開)PHP進行urlencode()和空白

發件人ID
發件人ID
發件人ID

當使用這種urlencode generator時,得到所需的輸出,其是

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

然而,當我使用PHP的urlencode()來我得到這個輸出

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

當使用PHP rawurlencode()我得到這個輸出

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

如何實現輸出一樣的發電機?我需要它是相同的,因爲黑莓手機會正常顯示斷線僅當換行符進行urlencode是%0A(我工作短信系統)。

現在,我能想到的唯一的辦法就是搜索%0D%0A與%0A

+0

紈絝子弟,哪裏是你原來的查詢字符串? – ajreal

+1

'%0D%0A'是'\ r \ N'。做'str_replace(「\ r \ n」,「\ n」,$ string)'。 – xfix

+0

有趣。一個在網上搜索「短信CRLF」的確表明CRLF沒有在一些短信系統的認可。誰會想到? (不,我使用的是Windows ....) –

回答

4

取代你正在由PHP直接翻譯,並通過你的生成工具忽視的Windows行的結局。最簡單的方法來擺脫它是簡單地:

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

%0D是指在13 ASCII字符:\r。由於這是緊跟%0A(在\n)很明顯,你有MS行結束(\r\n),而不是結束的* nix線(\n),而用urlencode發電機使用* nix的方法。

+0

謝謝,你的回答解開這個謎。 – cyberfly