中药方大全小图标
您当前的位置:首页 > 其他 > 网站日记

php函数重写之urlencode和rawurlencode

提示: 阅读权限:公开  来源:jiuhecai  作者:jiuhecai

官方说:

urlencode是一个函数,可将字符串以URL编码,用于编码处理。

URL编码(URL encoding),也称作百分号编码(Percent-encoding), 是特定上下文的统一资源定位符 (URL)的编码机制。

适用于统一资源标识符(URI)的编码,也用于为"application/x-www-form-urlencoded" MIME准备数据, 因为它用于通过HTTP的请求操作(request)提交HTML表单数据。


那么具体是如下实现的呢?自己做一个,就印象最深刻了。

$str='//我们_是 个孩子+-*/';
 echo  rawurlencode($str);
 echo  chr(13).chr(10);
 echo jhcencode($str);
 function jhcencode($str){
     $jg='';
     mb_internal_encoding('utf8');
     $len=mb_strlen($str);
     for($i=0;$i<$len;$i++){
         $c=mb_substr($str,$i,1);
         if($c==' '){
		 	$jg.='+';
		 }elseif(preg_match('/[0-9a-zA-Z-_.]/',$c)){
			 $jg.=$c;
		 }else{
		 
              $jg.='%'.trim(chunk_split(strtoupper(bin2hex($c)),2,'%'),'%'); 
         }
     }
    return $jg;
 }

可见,字母数字和三个大神(-_.)不用变,空格变加号(+),其他的做十六进制处理。

而rawurlencode,只是取消了空格的特权,规则为:字母数字和三个大神(-_.)不用变,其他的做十六进制处理。

所以呢,空格就变成%20,而不是+号了。可以这样实现:

function rawjhcencode($str){
     $jg='';
     mb_internal_encoding('utf8');
     $len=mb_strlen($str);
     for($i=0;$i<$len;$i++){
         $c=mb_substr($str,$i,1);
       if(preg_match('/[0-9a-zA-Z-_.]/',$c)){
		 $jg.=$c;
	}else{
		 
            $jg.='%'.trim(chunk_split(strtoupper(bin2hex($c)),2,'%'),'%'); 
         }
     }
    return $jg;
 }

raw是什么意思呢?就是未经处理的,生的。就算是生肉把。

tags: php php函数 urlencode
返回顶部
推荐资讯
视频:田纪钧讲关节不痛的秘密、膝关节拉筋法
视频:田纪钧讲关节不
白露到了,你还好吗?
白露到了,你还好吗?
尿疗与断食
尿疗与断食
给风疹反复发作女孩的药方(组图)
给风疹反复发作女孩的
相关文章
栏目更新
栏目热门
  1. 帝国cms全站搜索的分页格式如何修改-流程
  2. libreoffice7的命令大全
  3. 帝国cms插件之标题生成标题图片
  4. 帝国cms插件安装模板
  5. useragent两千条,爬虫专用
  6. 帝国cms插件如何兼容gbk和utf8
  7. 帝国cms插件之迅搜
  8. 帝国cms用户上传文件名的命名规则及修改方
  9. 帝国cms7.2函数大全
  10. 帝国cms代码片段备忘录