PHP解密Unicode及Escape加密字符串

5年以前  |  阅读数:801 次  |  编程语言:PHP 

本文给大家分享一个PHP解密Unicode及Escape加密字符串函数


    <?php  
    function uni_decode($s) {  
      preg_match_all('/\&\#([0-9]{2,5})\;/', $s, $html_uni);  
      preg_match_all('/[\\\%]u([0-9a-f]{4})/ie', $s, $js_uni);  
      $source = array_merge($html_uni[0], $js_uni[0]);  
      $js = array();  
      for($i=0;$i<count($js_uni[1]);$i++) {  
        $js[] = hexdec($js_uni[1][$i]);  
      }  
      $utf8 = array_merge($html_uni[1], $js);  
      $code = $s;  
      for($j=0;$j<count($utf8);$j++) {  
        $code = str_replace($source[$j], unicode2utf8($utf8[$j]), $code);  
      }  
      return $code;//$s;//preg_replace('/\\\u([0-9a-f]{4})/ie', "chr(hexdec('\\1'))", $s);  
    }  

    function unicode2utf8($c) {  
      $str="";  
      if ($c < 0x80) {  
         $str.=chr($c);  
      } else if ($c < 0x800) {  
         $str.=chr(0xc0 | $c>>6);  
         $str.=chr(0x80 | $c & 0x3f);  
      } else if ($c < 0x10000) {  
         $str.=chr(0xe0 | $c>>12);  
         $str.=chr(0x80 | $c>>6 & 0x3f);  
         $str.=chr(0x80 | $c & 0x3f);  
      } else if ($c < 0x200000) {  
         $str.=chr(0xf0 | $c>>18);  
         $str.=chr(0x80 | $c>>12 & 0x3f);  
         $str.=chr(0x80 | $c>>6 & 0x3f);  
         $str.=chr(0x80 | $c & 0x3f);  
      }  
      return $str;  
    }  

    $str='%u5927%u5BB6%u597D%uFF0C我是孤魂!<br />\u8FD9\u662F\u6D4B\u8BD5\u6587\u672C\uFF01';  
    echo uni_decode($str); // 大家好,我是孤魂!这是测试文本!  

在网上搜索一把,很多用php实现的escape函数,大同小异


    function phpescape($str){ 
      preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$newstr); 
      $ar = $newstr[0]; 
      foreach($ar as $k=>$v){ 
        if(ord($ar[$k])>=127){ 
          $tmpString=bin2hex(iconv("GBK","ucs-2",$v)); 
          if (!eregi("WIN",PHP_OS)){ 
            $tmpString = substr($tmpString,2,2).substr($tmpString,0,2); 
          } 
          $reString.="%u".$tmpString; 
        } else { 
          $reString.= rawurlencode($v); 
        } 
      } 
      return $reString; 
    } 

以上所述就是本文的全部内容了,希望大家能够喜欢。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例