PHP函数urlencode()和rawurlencode()的区别

本文详细介绍了PHP中的urlencode与rawurlencode函数的区别,包括它们如何处理特殊字符,尤其是空格的编码方式。通过示例展示了这两种函数的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)urlencode 函数:

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

(2)rawurlencode 函数:

返回字符串,此字符串中除了 - _ . 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 » RFC 3986 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱。

(3)具体请参考以下例子:

 
     
  1. <?php
  2. //urlencoderawurlencode的区别  
  3. $str1 = urlencode(':/?= &#');  
  4. $str2 = rawurlencode(':/?= &#'); 

  5. echo $str1."<br/>";

  6. echo $str2."<br/>"; 

  7. //唯一的不同是对空格的处理,urlencode处理成"+"rawurlencode处理成"%20"

  8. //urlencode使用方法:


  9. $foo = "web php.程序员_123"; 

  10. $bar = "shutdown -h now";  


  11. //urlencode只需对参数内容编码即可。

  12. $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);  

  13. echo 'mycgi?' . htmlentities($query_string) . '';  

  14. //输出: mycgi?foo=web+php.%e7%a8%8b%e5%ba%8f%e5%91%98_123&bar=shutdown+-h+now  


  15. ?>

     


通过以上2个例子,总结如下:

1. 数字、大小写字母都不编码。

2. 减号、点号、下划线 三个不编码。

3. rawurlencodeurlencode多编码一个加号("+")。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值