PHP urlencode

| コメント(0) | トラックバック(0)

PHPには、URLエンコードを自動でしてくれるとても
賢い関数があります。

しかし、2種類あるのはご存知でしょうか?
URLがスペースを含むとき、

urlencode() スペースが+に変換される
rawurlencode() スペースが%20に変換される(RFC 1738 に基づき URL エンコードを行う)

PHPマニュアルによると、urlencodeは、
-_. を除くすべての非英数文字が % 記号 (%)に続く二桁の数字で置き換えられ、 空白は + 記号(+)にエンコードされます。 同様の方法で、WWW のフォームからポストされたデータはエンコードされ、 application/x-www-form-urlencoded メディア型も同様です。歴史的な理由により、この関数は RFC1738 エンコード( rawurlencode() を参照してください) とは異なり、 空白を + 記号にエンコードします。 本関数は、URL の問い合わせ部分に使用する文字列のエンコードや 次のページへ変数を渡す際に便利です。

rawurlencodeは、
-_. を除くすべての非アルファベット文字をパーセント 記号 (%)に続いて 2 つの 16 進数がある表現形式に 置き換えた文字列を返します。これは、文字定数が特殊な URL デリミタと して解釈されたり、URL デリミタが(いくつかの電子メールシステムのような) 転送メディアにより文字変換されて失われてしまったりすることが ないように、RFC 1738 で定められたエンコーディング方法です。たとえば、 FTP の URL に中にパスワードを埋め込みたい場合は以下のようにします。

どちらを使うかは、場合によりますが、urlencode()でうまくいかない場合はrawurlencode()を
利用してみることをオススメします。スペースが+に変換では解釈(デコード)がうまくいかない場合があります。

トラックバック(0)

トラックバックURL: http://blog.shiromae.net/mt/mt-tb.cgi/4

コメントする

このブログ記事について

このページは、ヨシキが2008年11月 1日 16:05に書いたブログ記事です。

ひとつ前のブログ記事は「MySQL Install 4.1」です。

次のブログ記事は「rsyncの親ディレクトリ作成」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。