urlencode urldecode
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解析浏览器传过来的值
(3) string urlencode ( string str)
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进
制数。这是在 RFC 1738 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时
保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱。例如,如果你想在 FTP 的
URL 中包含密码:
例子 1. rawurlencode() 示例 1
复制代码 代码如下:
<?php
echo '<a href="ftp://user:', rawurlencode('foo @+%/'),
'@ftp.my.com/x.txt">';
?>
或者,如果你想通过 URL 的 PATH_INFO 构成部分去传递信息:
例子 2. rawurlencode() 示例 2
复制代码 代码如下:
<?php
echo '<a href="http://x.com/department_list_script/',
rawurlencode('sales and marketing/Miami'), '">';
?>
最新文章
- 【Python】[IO编程]文件读写,StringIO和BytesIO,操作文件和目录,序列化
- 微软.NET序列化格式
- Microsoft .NET Framework NGEN是神马东东?
- [Solution] 一步一步WCF(1) 快速入门
- EF实体框架之CodeFirst七
- ruby-gem
- Eclipse控制台输出信息的控制
- WatchKit App Submission Issues
- Eclipse设置、问题解决方案
- C#基础篇02
- Hibernate:组合模式解决树的映射
- C语言嵌入式系统编程修炼之二:软件架构篇
- ACPI电源管理中的S0 S1 S2 S3 S4 S5
- [LeetCode]题解(python):020-Valid Parentheses
- Java Web快速入门——全十讲
- How It Works: CMemThread and Debugging Them
- Spring mvc中junit测试遇到com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException错误怎么解决
- 【Web页面测试】测试点和测试用例
- springboot 集成 mybatis
- .NET 实用扩展方法