我收到一条获取请求,其中包含“aaa + bbb”之类的参数,我会
用
获取“aaa bbb”rawurldecode("aaa+bbb")
但是“aaa + bbb”和
rawurldecode(urlencode(urldecode("aaa+bbb")))
我不明白,rawurldecode()和
之间的区别是什么rawurldecode(用urlencode(urldecode()))...
谢谢
答案 0 :(得分:0)
没有区别:
$a = rawurldecode("aaa+bbb");
$b = rawurldecode(urlencode(urldecode("aaa+bbb")));
var_dump($a, $b);
string(7) "aaa+bbb" string(7) "aaa+bbb"
(demo)
如果你尝试两种编码都不常见的字符,那么 会有区别*:
$a = rawurldecode("aaa%20bbb");
$b = rawurldecode(urlencode(urldecode("aaa%20bbb")));
var_dump($a, $b);
string(7) "aaa bbb" string(7) "aaa+bbb"
(demo)
(*)根据文档,rawurlencode()实现RFC 3986,而urlencode()实现application / x-www-form-urlencoded:
此[application / x-www-form-urlencoded]与RFC 3986不同 编码因为历史原因,空格被编码为 加(+)标志。
答案 1 :(得分:-1)
你没有得到“aaa bbb”rawurldecode("aaa+bbb")
你得到“aaa + bbb”(你的意思是urldecode("aaa+bbb")
吗?)
echo rawurldecode("aaa+bbb") . "<br>\n";
AAA BBB +
echo urldecode("aaa+bbb"). "<br>\n";
echo urlencode(urldecode("aaa+bbb")). "<br>\n";
echo rawurldecode(urlencode(urldecode("aaa+bbb"))). "<br>\n";
aaa bbb
aaa + bbb
aaa + bbb