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 5.0对象模型深度探索之属性和方法
Mar 27 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
PHP输入流php://input介绍
Sep 18 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 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实现12306余票查询、价格查询示例
2014/04/17 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
django允许外部访问的实例讲解
2018/05/14 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
采购员的工作职责
2013/12/26 职场文书
开业主持词
2014/03/21 职场文书
《称赞》教学反思
2016/02/17 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
pytorch--之halfTensor的使用详解
2021/05/24 Python
python中%格式表达式实例用法
2021/06/18 Python