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结束标签的使用细节探讨及联想
Mar 04 PHP
PHP中最容易忘记的一些知识点总结
Apr 28 PHP
php设计模式之观察者模式的应用详解
May 21 PHP
php防止SQL注入详解及防范
Nov 12 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
PHPUnit安装及使用示例
Oct 29 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
php图像处理类实例
Jul 28 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
js实现按钮加背景图片常用方法
2014/11/01 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
微信小程序实现弹出层效果
2020/05/26 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
Python使用multiprocessing创建进程的方法
2015/06/04 Python
python实现获取Ip归属地等信息
2016/08/27 Python
对python中的logger模块全面讲解
2018/04/28 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
python代码编写计算器小程序
2020/03/30 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
Python笔记之工厂模式
2019/11/20 Python
python如何调用java类
2020/07/05 Python
python selenium xpath定位操作
2020/09/01 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
人力资源主管职责范本
2014/03/05 职场文书
揭牌仪式主持词
2014/03/19 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
总结Python变量的相关知识
2021/06/28 Python