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 相关文章推荐
Win2000+Apache+MySql+PHP4+PERL安装使用小结
Oct 09 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
Thinkphp多文件上传实现方法
Oct 31 PHP
PHP过滤黑名单关键字的方法
Dec 01 PHP
php 问卷调查结果统计
Oct 08 PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 PHP
php session实现多级目录存放实现代码
Feb 03 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
Jul 06 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 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进行MySQL删除记录操作代码
2008/06/07 PHP
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
Vue如何实现组件的源码解析
2017/06/08 Javascript
js正则相关知识点专题
2018/05/10 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
Python如何调用外部系统命令
2019/08/07 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
建筑工程专业学生的自我评价
2013/12/25 职场文书
集团薪酬管理制度
2014/01/13 职场文书
树转促学习心得体会
2014/09/10 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
500字小学生检讨书
2015/02/19 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers