urlencode编码后的字符串通过get传参接收后urldecode不一致的问题

不得不说,php文档还是看的不够多。记下来增强下记忆吧!

rawurlencode

  • 根据RFC 3986进行URL编码

  • 返回一个字符串,其中除-_.~之外的所有非字母数字字符 都替换为百分号(%)后跟两个十六进制数字。这是»RFC 3986中描述的编码,用于保护文字字符不被解释为特殊的URL分隔符,以及保护URL不被具有字符转换的传输媒体(如某些电子邮件系统)破坏。

urlencode

  • urlencode - URL编码字符串

  • 返回一个字符串,其中除-_之外的所有非字母数字字符 。已被替换为百分号(%),后跟两个十六进制数字和空格,编码为加号(+)。它的编码方式与编码WWW表单中的发布数据的方式相同,这与 application / x-www-form-urlencoded媒体类型的方式相同。这与»RFC 3986编码(参见 rawurlencode())的不同之处在于,由于历史原因,空格被编码为加号(+)。

$a = " -_.~ ";
var_dump($a);
$a = urlencode($a);
var_dump($a);
$a = urldecode($a);
var_dump($a);
$a = " -_.~ ";
$a = rawurlencode($a);
var_dump($a);
$a = rawurldecode($a);
var_dump($a);
string(6) " -_.~ "
string(8) "+-_.%7E+"
string(6) " -_.~ "
string(10) "%20-_.~%20"
string(6) " -_.~ "

总之这个函数不是万能的,自己根据场景选择吧

评论

captcha