PHP解密Unicode及Escape加密字符串


Posted in PHP onMay 17, 2015

本文给大家分享一个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 相关文章推荐
php MYSQL 数据备份类
Jun 19 PHP
php 获取一个月第一天与最后一天的代码
May 16 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
php实现utf-8转unicode函数分享
Jan 06 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
PHP中addcslashes与stripcslashes函数用法分析
Jan 07 PHP
PHP简单实现无限级分类的方法
May 13 PHP
php日期操作技巧小结
Jun 25 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
Oct 08 PHP
PHP实现远程下载文件到本地
May 17 #PHP
PHP生成json和xml类型接口数据格式
May 17 #PHP
php实现文本数据导入SQL SERVER
May 17 #PHP
php中PDO方式实现数据库的增删改查
May 17 #PHP
PHP图像处理类库及演示分享
May 17 #PHP
递归实现php数组转xml的代码分享
May 14 #PHP
php编写批量生成不重复的卡号密码代码
May 14 #PHP
You might like
深入apache host的配置详解
2013/06/09 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
php验证码实现代码(3种)
2015/09/07 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
简单分析python的类变量、实例变量
2019/08/23 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
建筑安全标语
2014/06/07 职场文书
教师节标语大全
2014/10/07 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
人才市场接收函
2015/01/30 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python