Согласно https://stackoverflow.com/a/1734255/1529630, encodeURIComponent
такая же, как rawurlencode
, но !*'()
не спасся, например,Имеет ли значение различное поведение между PHP `rawurlencode` и JS` encodeURIComponent`?
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-адрес, поэтому JS не трогать их. если php анализирует правильные URL-адреса, либо должен работать ... – dandavis