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
Dec 14 PHP
PHP读取目录下所有文件的代码
Jan 07 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
PHP 用数组降低程序的时间复杂度
Dec 04 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
自己写的php curl库实现整站克隆功能
Feb 12 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
php生成带logo二维码方法小结
Apr 08 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
PHP执行linux命令6个函数代码实例
Nov 24 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
海贼王:最美的悬赏令!
2020/03/02 日漫
星际争霸任务指南——虫族
2020/03/04 星际争霸
长波知识介绍
2021/03/01 无线电
人大复印资料处理程序_查询篇
2006/10/09 PHP
php图片上传类 附调用方法
2016/05/15 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python translator使用实例
2008/09/06 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Python写入CSV文件的方法
2015/07/08 Python
简单了解Python中的几种函数
2017/11/03 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
Django中URL的参数传递的实现
2019/08/04 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
python numpy库np.percentile用法说明
2020/06/08 Python
python中xlutils库用法浅析
2020/12/29 Python
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
欢迎横幅标语
2014/06/17 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
python实现学员管理系统(面向对象版)
2022/06/05 Python