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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
dedecms模板标签代码官方参考
Mar 17 PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
Jun 21 PHP
关于js与php互相传值的介绍
Jun 25 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
PHP通过引用传递参数用法分析
Dec 01 PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 PHP
在PHP中输出JS语句以及乱码问题的解决方案
Feb 13 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 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
轻松修复Discuz!数据库
2008/05/03 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python之str操作方法(详解)
2017/06/19 Python
python并发编程之线程实例解析
2017/12/27 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
Python中的self用法详解
2019/08/06 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
应征英语教师求职信
2013/11/27 职场文书
施工安全责任书范本
2014/07/24 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
团代会邀请函
2015/02/02 职场文书
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA