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
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 PHP
php 求质素(素数) 的实现代码
Apr 12 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
Apr 22 PHP
PHP运行模式汇总
Nov 06 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
PHP+MySQL实现模糊查询员工信息功能示例
Jun 01 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
PHP 采集程序中常用的函数
2009/12/09 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
初识PHP
2014/09/28 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
js图片查看器插件用法示例
2019/06/22 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python代码的打包与发布详解
2014/07/30 Python
python里将list中元素依次向前移动一位
2014/09/12 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
逻辑链路控制协议
2016/10/01 面试题
门卫岗位安全职责
2013/12/13 职场文书
中式婚礼主持词
2014/03/13 职场文书
欢迎新生标语
2014/10/06 职场文书
会计工作能力自我评价
2015/03/05 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
SQL中的三种去重方法小结
2021/11/01 SQL Server
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL