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 相关文章推荐
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
php中的一些数组排序方法分享
Jul 20 PHP
深入PHP数据加密详解
Jun 18 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
CodeIgniter读写分离实现方法详解
Jan 20 PHP
PHP的全局错误处理详解
Apr 25 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
php识别翻转iphone拍摄的颠倒图片
May 17 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 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实现的sqlite数据库连接类
2014/12/12 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
纯js实现背景图片切换效果代码
2010/11/14 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
JS使用for in有序获取对象数据
2020/05/19 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
python 字符串追加实例
2019/07/20 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
PageFactory设计模式基于python实现
2020/04/14 Python
Python计算信息熵实例
2020/06/18 Python
Python 爬虫的原理
2020/07/30 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
电大自我鉴定范文
2013/10/01 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
摘录式读书笔记
2015/07/01 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
学生会自荐信
2019/05/16 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
Python中else的三种使用场景
2021/06/16 Python
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android