php中urldecode和urlencode的具体使用

php中urldecode和urlencode的具体使用

ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器

1、urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%。

urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符

2、使用场景:

公司项目(搜索条件的数据传输,从一个页面到另外一个页面):

//serialize将数组转化为字符串,不用implode是因为有关联数组,implode处理关联数组会出错,urlencode是保证将%等特殊符号原样传输
v_set('where', urlencode($rs['where']));
v_set('args', urlencode(serialize($rs['args'])));
v_set('order', urlencode(serialize($rs['order'])));



(1)防止中文乱码及特殊符号乱码,比如%77%78%这一字符串在传输时就会乱码,所以需要用urlencode进行特殊处理
(2)回調地址,比如:
例如一個接口,你傳送過去時,需要帶上你這邊的回調地址,也是個url. 這樣你不能url+url傳送,需要一個urlencode把回調地址編碼,防止發生問題.
例如:微信的一個接口
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
REDIRECT_URI 這裡應該填你的服務器回調地址.正常寫法如 http://api.baidu.com/callback.php
那麼生成的接口就是
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http://api.baidu.com/callback.php&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
這樣訪問肯定出問題...
那麼http://api.baidu.com/callback.php 這個回調地址,就要urlencode后再放到地址中發送.
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3A%2F%2Fapi.baidu.com%2Fcallback.php&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
這樣傳就沒問題了!



3、注意事项:大部分(99%)的浏览器都会对传过来的值进行urlencode,同时$_GET、$_REQUEST这些都会自动用urldecode解析浏览器传过来的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值