PHP urlencode() 和空格

4

我有一个需要编码的字符串(包含换行符)

发送者ID
发送者ID
发送者ID

当使用这个urlencode生成器时,我得到了期望的输出结果,即

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。

兄弟,你的原始查询字符串在哪里? - ajreal
1
%0D%0A\r\n。使用 str_replace("\r\n","\n",$string) 进行替换。 - Konrad Borowski
有趣。搜索“SMS上的CRLF”确实显示某些SMS系统不识别CRLF。谁会想到呢?(我并不使用Windows....) - Ray Toal
1个回答

4

你的文本中有Windows换行符,PHP直接翻译并被生成工具忽略了。解决方法很简单:

  • 将文本转换为Unix格式
str_replace( "\r\n", "\n", $input );

%0D指的是ASCII字符中的第13个字符:\r。由于紧接着后面是%0A(即\n),因此可以确定你使用的是MS换行符(\r\n)而不是*nix换行符(\n),并且urlencode生成器使用的是*nix方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接