我们在做一些api的时候,就会有用到url编码。

比如微信的接口,你在做网页授权的时候,其中就有个redirect_uri参数值就是个url,如果url+url肯定不合适,那么这时候就需要把url进行编码当做参数去传递。

那么PHP中怎么实现url编码呢?

我们大多数人肯定首先想到的就是urlencode()函数。

确实,urlencode就是做url编码的。但是还有一个函数也是做url编码的,rawurlencode()

urlencode()

示例:

<?php 
echo urlencode('https://www.nuxtv.com');

结果:

http%3A%2F%2Fwww.vstary.com

函数说明:

返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 » RFC3896 编码(参见 rawurlencode())不同。

rawurlencode()

示例:

<?php 
echo rawurlencode('https://www.nuxtv.com');

结果:

http%3A%2F%2Fwww.vstary.com

两个结果并无任何差别,但是如果遇到有__空格编码成加号(+)__的字符串

示例:

$str = 'https://www.nuxtv.com/a=djl 344';
echo urlencode($str);
echo '<br>';
echo rawurlencode($str);

结果:

http%3A%2F%2Fwww.vstary.com%2Fa%3Ddjl+344
http%3A%2F%2Fwww.vstary.com%2Fa%3Ddjl%20344

差异就体现出来了,所以在开发中要注意这些细节..