根据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