urlencode 和 rawurlencode区别
urlencode:编码 URL 字符串
手册上是这样解释的:
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同。
rawurlencode:根据 » RFC 3986 编码指定的字符。
俩个对应的解码是:urldecode,rawurldecode;
来个例子比较好对比:
1 <?php
2 header("Content-type:text/html;charset=utf-8");
3 $str = "http://www.baidu.com?name=多多喜 ";
4 echo rawurlencode($str);
5 echo "<br>";
6 echo rawurldecode($str);
7 echo "<br>";
8 $str1 = "http://www.baidu.com?name=多多喜 ";
9 echo urlencode($str1);
10 echo "<br>";
11 echo urldecode($str1);
结果:
http%3A%2F%2Fwww.baidu.com%3Fname%3D%E5%A4%9A%E5%A4%9A%E5%96%9C%20
http://www.baidu.com?name=多多喜
http%3A%2F%2Fwww.baidu.com%3Fname%3D%E5%A4%9A%E5%A4%9A%E5%96%9C+
http://www.baidu.com?name=多多喜
可以看出,就空格的差异。。urlencode 转化成 %20;rawurlencode 转换成+
耐得寂寞,赢得繁华~