·您当前的位置:首页 > 技术教程 > PHP教程 >

[PHP]用php程序实现js中escape(unescape)的函数

时间:2014-07-15 15:08liyizheyu的BLOG
php模拟js escape(unescape)函数整理 ,js escape编码传递参数php程序获取后需解码,同时某些特定链接也得编码

工作中一个项目使用了js escape编码传递参数php程序获取后需解码,同时某些特定链接也得编码,在网络上收集到了一些函数这里记录下

  1. /**  
  2.  * 类js unescape函数,解码经过escape编码过的数据  
  3.  * @param $str  
  4.  */  
  5. function unescape($str)  
  6. {  
  7.     $ret = '';  
  8.     $len = strlen($str);  
  9.     for ($i = 0; $i < $len; $i ++)  
  10.     {  
  11.         if ($str[$i] == '%' && $str[$i + 1] == 'u')  
  12.         {  
  13.             $val = hexdec(substr($str, $i + 2, 4));  
  14.             if ($val < 0x7f)  
  15.                 $ret .chr($val);  
  16.             else   
  17.                 if ($val < 0x800)  
  18.                     $ret .chr(0xc0 | ($val >> 6)) .  
  19.                      chr(0x80 | ($val & 0x3f));  
  20.                 else  
  21.                     $ret .chr(0xe0 | ($val >> 12)) .  
  22.                      chr(0x80 | (($val >> 6) & 0x3f)) .  
  23.                      chr(0x80 | ($val & 0x3f));  
  24.             $i += 5;  
  25.         } else   
  26.             if ($str[$i] == '%')  
  27.             {  
  28.                 $ret .urldecode(substr($str, $i, 3));  
  29.                 $i += 2;  
  30.             } else  
  31.                 $ret .= $str[$i];  
  32.     }  
  33.     return $ret;  
  34. }  
  35. /**  
  36.  * js escape php 实现  
  37.  * @param $string           the sting want to be escaped  
  38.  * @param $in_encoding        
  39.  * @param $out_encoding       
  40.  */  
  41. function escape($string, $in_encoding = 'UTF-8',$out_encoding = 'UCS-2') {  
  42.     $return = '';  
  43.     if (function_exists('mb_get_info')) {  
  44.         for($x = 0; $x < mb_strlen ( $string, $in_encoding ); $x ++) {  
  45.             $str = mb_substr ( $string, $x, 1, $in_encoding );  
  46.             if (strlen ( $str ) > 1) { // CuPlayer.com多字节字符  
  47.                 $return .'%u' . strtoupper ( bin2hex ( mb_convert_encoding ( $str, $out_encoding, $in_encoding ) ) );  
  48.             } else {  
  49.                 $return .'%' . strtoupper ( bin2hex ( $str ) );  
  50.             }  
  51.         }  
  52.     }  
  53.     return $return;  
  54. }  

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器