人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのurlencode、urldecodeについて質問です。
"+"を含む文字列をURL上で受け渡す方法を教えてください。

urlencodeは半角スペースを"+"に変換します。このため"+"の文字列を含む文字列をurldecodeすると、"+"が半角スペースになってしまいます。現在は、str_replaceで半角スペースを"+"に置換していますが、本来の半角スペースと区別が付きません。


●質問者: ibun08
●カテゴリ:ウェブ制作
✍キーワード:PHP 文字列 現在
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● o2aholic
●27ポイント

http://oshiete1.goo.ne.jp/qa3384201.html

phpは全然詳しくないのですがrawurlencodeを使うと良いようですよ。

◎質問者からの返答

これならばstr_replaceで置換しても、不具合は解消できそうです。試してみます。


2 ● tezcello
●27ポイント

うちのPHP5.2.4 では

$str = 'http://www.hoge.com?fuga=abc&abc= +123';
var_dump(urlencode($str));

結果は、

string(54) "http%3A%2F%2Fwww.hoge.com%3Ffuga%3Dabc%26abc%3D+%2B123" 

となるのですが、質問者さんのところではこうなりませんか?

' ' -> '+'

'+' -> '%2B'

のように置換えてくれるので、ごっちゃにならないと思うのですが。

http://jp2.php.net/manual/ja/function.urlencode.php


str_replace() で変換するのなら、先に '+' -> '%2B' としておいて ' ' -> '+' とすればこの部分に関しては同じ結果になります。(戻す時は、先に '+' -> ' ')

◎質問者からの返答

2回str_replaceするのは賢いですね。確実な方法をありがとうございます。


3 ● y-kawaz
●26ポイント

urlencodeしたら半角スペースが+になるのも、ueldecodeで+が半角スペースになるのも仕様です。

URLに+があってもそれはurlencodeすれば%2Bになるはずです。%2Bをurldecodeすれば+に戻るので区別がつかなくなることはありません。

http://q.hatena.ne.jp/answer

◎質問者からの返答

なるほど、当初の+とは区別できることが分かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ