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来写记数器(详细介绍)
Oct 09 PHP
在php和MySql中计算时间差的方法
Apr 22 PHP
基于PHP对XML的操作详解
Jun 07 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
PHP实现简单用户登录界面
Oct 23 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 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实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
python中pycurl库的用法实例
2014/09/30 Python
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
对python周期性定时器的示例详解
2019/02/19 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
会计自荐书
2013/12/02 职场文书
毕业生个人求职信范文分享
2014/01/05 职场文书
档案检查欢迎词
2014/01/13 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
道歉信范文
2015/05/12 职场文书
小学毕业感言200字
2015/07/30 职场文书
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers