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 相关文章推荐
BBS(php &amp; mysql)完整版(四)
Oct 09 PHP
java EJB 加密与解密原理的一个例子
Jan 11 PHP
Optimizer与Debugger兼容性问题的解决方法
Dec 01 PHP
PHP Pear 安装及使用
Mar 19 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
PHP中替换换行符的几种方法小结
Oct 15 PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
php中Swoole的热更新实现代码实例
Mar 04 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
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
编辑浪子版表单验证类
2007/05/12 Javascript
javascript之更有效率的字符串替换
2008/08/02 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
js constructor的实际作用分析
2011/11/15 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
浅谈Python中的数据类型
2015/05/05 Python
python字典排序实例详解
2015/05/20 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
python对视频画框标记后保存的方法
2018/12/07 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
flask项目集成swagger的方法
2020/12/09 Python
美国家居装饰店:Pier 1
2019/09/04 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
公务员保密承诺书
2014/03/27 职场文书
故宫英文导游词
2015/01/31 职场文书
业务员辞职信范文
2015/03/02 职场文书
刑事案件上诉状
2015/05/23 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript