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模板之Phpbean的目录结构
Jan 10 PHP
php 禁止页面缓存输出
Jan 07 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
php向js函数传参的几种方法
Aug 10 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
Dec 07 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
Jun 09 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 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
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
分享一则javascript 调试技巧
2015/01/02 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
几种tab切换详解
2017/02/03 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
Python中str is not callable问题详解及解决办法
2017/02/10 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
服装销售人员求职自我评价
2013/09/26 职场文书
光电信息专业应届生求职信
2013/10/07 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
体育教师个人总结
2015/02/09 职场文书
详解python的内存分配机制
2021/05/10 Python
MySQL慢查询优化解决问题
2022/03/17 MySQL
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL