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 相关文章推荐
PHP开发框架总结收藏
Apr 24 PHP
PHP 翻页 实例代码
Aug 07 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
php中switch语句用法详解
Aug 17 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
php获取本机真实IP地址实例代码
Mar 31 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
Windows 下安装 swoole 图文教程(php)
Jun 05 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
javascript 小型动画组件与实现代码
2010/06/02 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
js控制table合并具体实现
2014/02/20 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
JQuery球队选择实例
2015/05/18 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
python之django母板页面的使用
2018/07/03 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
五一劳动节活动记录
2014/03/23 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
优秀毕业生求职信
2014/06/05 职场文书
主要领导对照检查材料
2014/08/26 职场文书
付款承诺函范文
2015/01/21 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书