js encodeURI() -_.~!*'();,/?:@&=+$# 赤字はデコードも無視
js encodeURIComponent() -_.~!*'()
php urlencode() -_. (スペースは+)
php rawurlencode() -_.~
js → phpの場合
encodeURI() か encodeURIComponent() → rawurlencode()
php → jsの場合
rawurlencode() → encodeURIComponent()
ブラウザのurl入力欄で使用されるのはjsのencodeURI()。
jsのエンコードはencodeURI(), encodeURIComponent()どちらでも良いが、デコードはdecodeURI()は使わないほうが良いと思う。(デコードされない記号があるため)
phpでurlencode()を使用するメリットは基本的にはない。Wordpressでも使用は非推奨。