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 相关文章推荐
模拟flock实现文件锁定
Feb 14 PHP
php中var_export与var_dump的区别分析
Aug 21 PHP
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
比file_get_contents稳定的curl_get_contents分享
Jan 11 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
php取整函数ceil,floo,round的用法及介绍
Aug 31 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
Yii实现多数据库主从读写分离的方法
Dec 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
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
突发奇想的一个jquery插件
2010/11/19 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
Vuex实现数据共享的方法
2019/12/20 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
Python实现的石头剪子布代码分享
2014/08/22 Python
Python set集合类型操作总结
2014/11/07 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
python如何从文件读取数据及解析
2019/09/19 Python
python的scipy实现插值的示例代码
2019/11/12 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
工作时间擅自离岗检讨书
2014/10/24 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
如何使用php生成zip压缩包
2021/04/21 PHP
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python