0

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']の違いにより、異なる結果を得ることができますか?encodeURIComponentrawurlencode

4

1 に答える 1

1

コード内で特別な用途を持つことができる文字のみをエスケープする必要があります。

たとえば、次のコードを使用して、コードに数学的比較または計算を実行させることができます - < , > , + , - , / , =

- ? などの URL 作成に固有の予約文字があります。、@、%、#

文字 !*'() には特別な意味がないため、誤解されることはないため、エスケープする必要はありません。ただし、文字を不必要にエスケープできるため、別の結果のように見える場合がありますが、同じことを意味/実行します。

これはより完全な内訳を持っています - http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

于 2013-09-23T21:34:07.803 に答える