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版(4)
Oct 09 PHP
php创建多级目录代码
Jun 05 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
PHP中开启gzip压缩的2种方法
Jan 31 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
合格的PHP程序员必备技能
Nov 13 PHP
PHP mysql事务问题实例分析
Jan 18 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
php的对象传值与引用传值代码实例讲解
Feb 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
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
基于php判断客户端类型
2016/10/14 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
js 目录列举函数
2008/11/06 Javascript
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
Python实现的石头剪子布代码分享
2014/08/22 Python
Python实现控制台进度条功能
2016/01/04 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
python实现扫雷游戏
2020/03/03 Python
Python日志器使用方法及原理解析
2020/09/27 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
在校生钳工实习自我鉴定
2013/09/19 职场文书
幼儿园新学期寄语
2014/01/18 职场文书
护理专科自荐书范文
2014/02/18 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
工作会议简报
2015/07/20 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书