xuzuning(唠叨)老大写的escape/unescape函数

php提供的URL编码函数是基于字节的,对由ie的javascript函数escape编码的数据就无能为力了。
因此在此共享本人的php版的escape/unescape函数

function  escape( $str ) {
  
preg_match_all ( " /[€-ÿ].|[-]+/ " , $str , $r );
  
$ar   =   $r [ 0 ];
  
foreach ( $ar   as   $k => $v ) {
    
if ( ord ( $v [ 0 ])  <   128 )
      
$ar [ $k =   rawurlencode ( $v );
    
else
      
$ar [ $k =   " %u " . bin2hex ( iconv ( " GB2312 " , " UCS-2 " , $v ));
  }
  
return   join ( "" , $ar );
}

function  unescape( $str ) {
  
$str   =   rawurldecode ( $str );
  
preg_match_all ( " /(?:%u.{4})|.+/ " , $str , $r );
  
$ar   =   $r [ 0 ];
  
foreach ( $ar   as   $k => $v ) {
    
if ( substr ( $v , 0 , 2 ==   " %u "   &&   strlen ( $v ==   6 )
      
$ar [ $k =   iconv ( " UCS-2 " , " GB2312 " , pack ( " H4 " , substr ( $v ,- 4 )));
  }
  
return   join ( "" , $ar );
}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值