宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > PHP教程

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

2016-10-13 00:16:48 点击量:11 标签: 收藏本文

工作中一个项目使用了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. }  

 

上一篇: [PHP]PHP的escape函数和unescape函数源代码
下一篇: 没有了
ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室