PHP下escape解码函数的实现方法


Posted in PHP onAugust 08, 2010

GB2312编码:

function unescape($str) { 
$str = rawurldecode($str); 
preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r); 
$ar = $r[0]; 
foreach($ar as $k=>$v) { 
if(substr($v,0,2) == "%u") 
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4))); 
elseif(substr($v,0,3) == "&#x") 
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1))); 
elseif(substr($v,0,2) == "&#") { 
$ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1))); 
} 
} 
return join("",$ar); 
}

UTF8编码:
function unescape($str){ 
$ret = ''; 
$len = strlen($str); 
for ($i = 0; $i < $len; $i++){ 
if ($str[$i] == '%' && $str[$i+1] == 'u'){ 
$val = hexdec(substr($str, $i+2, 4)); 
if ($val < 0x7f) $ret .= chr($val); 
else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f)); 
else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f)); 
$i += 5; 
} 
else if ($str[$i] == '%'){ 
$ret .= urldecode(substr($str, $i, 3)); 
$i += 2; 
} 
else $ret .= $str[$i]; 
} 
return $ret; 
}
PHP 相关文章推荐
PHP4实际应用经验篇(3)
Oct 09 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
php array_merge函数使用需要注意的一个问题
Mar 30 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
zen_cart实现支付前生成订单的方法
May 06 PHP
PHP编写的图片验证码类文件分享
Jun 06 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 PHP
PHP控制循环操作的时间
Apr 01 PHP
如何用Laravel包含你自己的帮助函数
May 27 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 #PHP
PHP MemCached高级缓存配置图文教程
Aug 05 #PHP
PHP Array交叉表实现代码
Aug 05 #PHP
php垃圾代码优化操作代码
Aug 05 #PHP
PHP MemCached 高级缓存应用代码
Aug 05 #PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
Aug 01 #PHP
PHP合并数组+与array_merge的区别分析
Aug 01 #PHP
You might like
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
jquery属性过滤选择器使用示例
2013/06/18 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
Python是怎样处理json模块的
2020/07/16 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
水果超市创业计划书
2014/01/27 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
胡桃夹子观后感
2015/06/11 职场文书
参加招聘会后的感想
2015/08/10 职场文书
Java中的继承、多态以及封装
2022/04/11 Java/Android