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获取金书网的书名的实现代码
Jun 11 PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 PHP
PHP浮点比较大小的方法
Feb 14 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
php支付宝系列之电脑网站支付
May 30 PHP
PHP封装的完整分页类示例
Aug 21 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
解决laravel5.4下的group by报错的问题
Oct 16 PHP
如何理解PHP核心特性命名空间
May 28 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
建立动态的WML站点(一)
2006/10/09 PHP
第七节--类的静态成员
2006/11/16 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
详解python如何引用包package
2020/06/07 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
个人充满哲理的自我评价
2014/02/20 职场文书
食品安全工作实施方案
2014/03/26 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
先进个人申报材料
2014/12/30 职场文书
写给父母的感谢信
2015/01/22 职场文书
文员岗位职责
2015/02/04 职场文书
员工离职通知函
2015/04/25 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
PHP设计模式(观察者模式)
2021/07/07 PHP