php 正确解码javascript中通过escape编码后的字符


Posted in PHP onJanuary 28, 2010

这是很久以前收集的一个,不知道谁写的了,但经过测试没有问题~
JavaScript代码

function phpUnescape($escstr) 
{ 
preg_match_all("/%u[0-9A-Za-z]{4}|%.{2}|[0-9a-zA-Z.+-_]+/", $escstr, $matches); 
$ar = &$matches[0]; 
$c = ""; 
foreach($ar as $val) 
{ 
if (substr($val, 0, 1) != "%") 
{ 
$c .= $val; 
} elseif (substr($val, 1, 1) != "u") 
{ 
$x = hexdec(substr($val, 1, 2)); 
$c .= chr($x); 
} 
else 
{ 
$val = intval(substr($val, 2), 16); 
if ($val < 0x7F) // 0000-007F 
{ 
$c .= chr($val); 
} elseif ($val < 0x800) // 0080-0800 
{ 
$c .= chr(0xC0 | ($val / 64)); 
$c .= chr(0x80 | ($val % 64)); 
} 
else // 0800-FFFF 
{ 
$c .= chr(0xE0 | (($val / 64) / 64)); 
$c .= chr(0x80 | (($val / 64) % 64)); 
$c .= chr(0x80 | ($val % 64)); 
} 
} 
} 
return $c; 
}

escape编码后:
%u6D4B%u8BD53water.com%22%22%27%27%3C%3E%26%26

解码后:
测试3water.com""''<>&&
PHP 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
adodb与adodb_lite之比较
Dec 31 PHP
解析isset与is_null的区别
Aug 09 PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
PHP中变量引用与变量销毁机制分析
Nov 15 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
PHP的自定义模板引擎
Mar 24 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
PHP回调函数简单用法示例
May 08 PHP
php读取xml实例代码
Jan 28 #PHP
通过具体程序来理解PHP里面的抽象类
Jan 28 #PHP
认识并使用PHP超级全局变量
Jan 26 #PHP
php 静态变量与自定义常量的使用方法
Jan 26 #PHP
php学习之 认清变量的作用范围
Jan 26 #PHP
PHP 变量的定义方法
Jan 26 #PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 #PHP
You might like
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
初识Javascript小结
2015/07/16 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
简单了解JavaScript异步
2019/05/23 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
基于Python实现文件大小输出
2016/01/11 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
python 如何快速复制序列
2020/09/07 Python
scrapy头部修改的方法详解
2020/12/06 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
求职自我推荐信
2014/06/25 职场文书
擅自离岗检讨书
2014/09/12 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
招标保密承诺书
2015/01/20 职场文书
二审答辩状格式
2015/05/22 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis