説明
string 
urlencode ( string str)
     -_.を除くすべての非英数文字が、%記号
     (%)に続く二桁の数字で置き換えられ、
     空白は+記号(+)にエンコードされます。
     同様の方法で、WWWのフォームからポストされたデータはエンコード
     され、application/x-www-form-urlencoded
     メディア型も同様です。RFC1738エンコード(
     rawurlencode()を参照してください)との
     違いは、歴史的な理由で、空白が+記号にエンコードされることです。
     本関数は、URLの問い合わせ部分に使用する文字列のエンコードや
     次のページへ変数を渡すのに便利です。
     
例 1urlencode()の使用例 echo '<a href="mycgi?foo=', urlencode($userinput), '">';  |  
  | 
    注意
      HTMLエンティティにマッチする変数については注意が必要です。
      &、©、£のようなものがブラウザから送信さ
      れた場合、エンティティの実体が望ましい変数名の代わりに使用されま
      す。これは明らかな問題点であり、W3Cが何年も指摘し続けてきたこと
      です。リファレンスは、http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2にあります。PHPでは、
      .ini ディレクティブのarg_separatorにより引数のセパレータをW3Cが
      推奨するセミコロンに変更することが可能です。残念なことに多くのユー
      ザエージントは、このセミコロン区切り形式でデータを送信しません。
      よりポータブルな方法としては、セパレータに& の代わりに
      & を使用するというものがあります。この場合、PHPの
      arg_separatorを変更する必要はありません。セパレータは $amp; の
      ままにしますが、URLは
      htmlentities()(urlencode($data))によりエンコー
      ドして下さい。
      
例 2urlencode/htmlentities()の例 echo '<a href="mycgi?foo=', htmlentities(urlencode($userinput)), '">';  |  
  | 
     
     urldecode(),
     htmlentities(),
     rawurldecode(),
     rawurlencode()も参考にしてください。