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 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
php中运用http调用的GET和POST方法示例
Sep 29 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
详解PHP中的PDO类
Jul 06 PHP
PHP使用array_merge重新排列数组下标的方法
Jul 22 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
Mar 18 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
laravel migrate初学常见错误的解决方法
Oct 11 PHP
Yii2框架自定义验证规则操作示例
Feb 08 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
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
给水工程专业毕业生自荐信
2014/01/28 职场文书
辛亥革命观后感
2015/06/02 职场文书
入党培养人考察意见
2015/06/08 职场文书
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android