PHP 'rawurlencode' 和 JS 'encodeURIComponent' 之间的不同行为是否重要?
Does it matter the different behavior between PHP `rawurlencode` and JS `encodeURIComponent`?
根据 https://stackoverflow.com/a/1734255/1529630,encodeURIComponent
与rawurlencode
相同,但!*'()
没有转义,例如,
function encodeURIComponent($str) {
$revert = array('%21'=>'!', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')');
return strtr(rawurlencode($str), $revert);
}
但是,这种差异重要吗?
通常,我使用类似的东西
- 在 JS 中
wrapper.innerHTML = '<a href="foo.php?bar=' + encodeURIComponent(myVar) + '">Link</a>';
- 在 PHP 中
echo '<a href="foo.php?bar=' . rawurlencode(myVar) . '">Link</a>';
如果那么,在foo.php
中,我使用$_GET['bar']
,是否有可能由于encodeURIComponent
和rawurlencode
之间的差异而得到不同的结果?
您只需要转义代码中可能具有特殊用途的字符。
例如,以下内容可用于要求代码进行数学比较或计算 -<,> , + , - ,/, =
然后是特定于 URL 创建的保留字符,例如 -?, @ , %, #
字符 !*'() 没有特殊含义,因此不会被误解,因此不需要转义。但是,您可以不必要地转义字符,因此它可能看起来像不同的结果,但它意味着/做同样的事情。
这有一个更彻底的细分 - http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
相关文章:
- 是否有任何JavaScript UI组件可以显示字符串之间的差异
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- 如何检查光标是否位于指定的标记之间
- 是否可以在jquery中使用拖动滑块在4个图像之间滑动
- 异步函数调用是否可以在两个同步语句之间完成
- 验证数字是否在0.00到20.00之间的正则表达式
- 找出LngLat点是否在另外两个点之间
- Flash Professional HTML5 Canvas:是否可以在HTML表单和Canvas之间共享数据
- 验证javascript中的输入是否在2个数字之间
- 浏览器是否在选项卡之间传播javascript变量
- 如何使用Moment.JS检查当前时间是否在2次之间
- 我想知道是否可以使用 node.js 在窗口之间发送数据
- 如何确定数组中的值是否位于两个附加数组的所有并行索引的值之间
- 以下 2 段代码之间是否有实际区别
- 检查数字是否在两个数字之间
- Angular 模板缓存是否在应用程序之间共享?是不是坚持不懈
- 是否可以在由春季网络流驱动的html页面之间传输数据
- 是否可以在多个网页之间链接值
- AngularJS检查下载的json是否在工作副本之间有差异
- 是否可以在悬停时在两个字体图标之间切换