rawurldecode()和rawurldecode(urlencode(urldecode())之间的区别是什么

时间:2018-05-09 12:59:38

标签: php urldecode

我收到一条获取请求,其中包含“aaa + bbb”之类的参数,我会

获取“aaa bbb”
rawurldecode("aaa+bbb") 

但是“aaa + bbb”和

rawurldecode(urlencode(urldecode("aaa+bbb")))

我不明白,rawurldecode()和

之间的区别是什么

rawurldecode(用urlencode(urldecode()))...

谢谢

2 个答案:

答案 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