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 相关文章推荐
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
PHP获取中英混合字符串长度的方法
Jun 07 PHP
CodeIgniter表单验证方法实例详解
Mar 03 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
PHP session 会话处理函数
Jun 06 PHP
PHP的openssl加密扩展使用小结(推荐)
Jul 18 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP PDOStatement::errorCode讲解
Jan 31 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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
php 特殊字符处理函数
2008/09/05 PHP
浅析php学习的路线图
2013/07/10 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
火车票抢票python代码公开揭秘!
2018/03/08 Python
python去除扩展名的实例讲解
2018/04/23 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python交易记录整合交易类详解
2019/07/03 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
python模块导入的方法
2019/10/24 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
Python网页解析器使用实例详解
2020/05/30 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
大学学习生活感言
2014/01/18 职场文书
英语教育专业自荐信
2014/05/29 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
建房合同协议书
2016/03/21 职场文书
导游词之临安白水涧
2019/11/05 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
Mysql 用户权限管理实现
2021/05/25 MySQL