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 相关文章推荐
第六节 访问属性和方法 [6]
Oct 09 PHP
一个程序下载的管理程序(三)
Oct 09 PHP
php获取mysql数据库中的所有表名的代码
Apr 23 PHP
简单的PHP缓存设计实现代码
Sep 30 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
PHP常用函数之base64图片上传功能详解
Oct 21 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
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
js每次Title显示不同的名言
2008/09/25 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
js html css实现复选框全选与反选
2016/10/09 Javascript
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
python 字符串split的用法分享
2013/03/23 Python
python迭代器与生成器详解
2016/03/10 Python
python判断完全平方数的方法
2018/11/13 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
策划主管的工作职责
2013/11/24 职场文书
工商企业管理实习自我鉴定
2013/12/04 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
python实现图片九宫格分割的示例
2021/04/25 Python
Pandas搭配lambda组合使用详解
2022/01/22 Python