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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
PHP中读写文件实现代码
Oct 20 PHP
php array的学习笔记
May 16 PHP
php如何调用webservice应用介绍
Nov 24 PHP
浅谈php优化需要注意的地方
Nov 27 PHP
linux中cd命令使用详解
Jan 08 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
stripos函数知识点实例分享
Feb 11 PHP
Thinkphp页面跳转设置跳转等待时间的操作
Oct 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
深入理解React中何时使用箭头函数
2017/08/23 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
python使用append合并两个数组的方法
2015/04/28 Python
python的pip安装以及使用教程
2018/09/18 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
学校春季防火方案
2014/06/08 职场文书
团队拓展活动方案
2014/08/28 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
2015年试用期工作总结
2014/12/12 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript