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实现多级树型菜单
Oct 09 PHP
php array_unique之后json_encode需要注意
Jan 02 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
php递归删除目录与文件的方法
Jan 30 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
PHP一个简单的无需刷新爬虫
Jan 05 PHP
PHP回调函数简单用法示例
May 08 PHP
Laravel第三方包报class not found的解决方法
Oct 13 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开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
探讨PHP中this,self,parent的区别详解
2013/06/08 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
Vue程序调试的方法
2019/06/17 Javascript
python插入排序算法实例分析
2015/07/03 Python
十个Python程序员易犯的错误
2015/12/15 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
python基于递归解决背包问题详解
2019/07/03 Python
使用python实现画AR模型时序图
2019/11/20 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
志愿者宣传口号
2014/06/17 职场文书
实习生个人总结范文
2015/02/28 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
服务器间如何实现文件共享
2022/05/20 Servers
服务器SVN搭建图文安装过程
2022/06/21 Servers