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 is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
PHP过滤黑名单关键字的方法
Dec 01 PHP
了解PHP的返回引用和局部静态变量
Jun 04 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
Joomla调用系统自带编辑器的实现方法
May 05 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
php操作access数据库的方法详解
Feb 22 PHP
php-app开发接口加密详解
Apr 18 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
解决php扩展安装不生效问题
Oct 25 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 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调用三种数据库的方法(1)
2006/10/09 PHP
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
apache php模块整合操作指南
2012/11/16 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
js自定义事件代码说明
2011/01/31 Javascript
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python贪吃蛇游戏编写代码
2020/10/26 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
数组越界问题
2015/10/21 面试题
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
电气自动化自荐信
2013/10/10 职场文书
正规的求职信范文分享
2013/12/11 职场文书
装修致歉信
2014/01/15 职场文书
公司面试感谢信
2014/02/01 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
2015年测量员工作总结
2015/05/23 职场文书