对URL中的参数编码和解码

     有时,我们希望点击页面中的链接跳转其他页面,并且以get的方式传递一些参数。如果不对这些参数编码,可能会造成一些问题:

      1.  参数中的空格可能会让你无法打开页面

      2.  参数中的&符号会影响参数的解析

 

      解决方法:  对链接中的参数编码,在请求的页面里先解析出参数,然后解码

 

      具体做法:

      1. 用urlencode函数对链接中的参数值 编码

 

$url = "http://www.baidu.com?firstname=" . rawurlencode($firstname); 

 

             此函数返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(% )后跟两位十六进

       制数,   空格则编码为加号(+ )。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-

       www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与

       RFC1738 编码(参见 rawurlencode() )不同。

             rawurlencode与urlcode几乎完全相同,除了将空格也编码成百分号(% )后跟两位十六进制数的形式。至

       此,最好用rawurlencode。

 

$url = "http://www.baidu.com?firstname=" . rawurlencode($firstname);

 

      2. 如果有多个参数的话,我们会用到&最为参数之间的分隔符。但是,如果参数值包含&符号,就可能造成参数解析错

          误。 此时可以

 

$query_string = "?firstname=" . rawurlencode($firstname) . "&lastname=" . rawurlencode($lastname);
$url = "http://www.baidu.com" . htmlentities($query_string);  

         或者直接将&写成 &

 

       3. 在被请求的页面里使用urlencode或者rawurldecode解码:

 

$firstname = rawurldecode($_GET['firstname']);

 

       Note(for myself):

       1. 在涉及到编解码的问题是,只要保证用的字符集相同,就不会出现乱码的问题。

       2. htmlentities vs html_entity_decode, htmlspecialchars vs htmlspecialchars_decode

       3. htmlentities与htmlspecialchars的区别。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值