- ベストアンサー
urldecodeについて
- urldecodeについて質問です。
- urldecodeは、エンコードされた文字列をデコードするための関数です。
- また、エンコードされた文字がなくても使用できますが、正しい結果が得られない可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
質問1: http://php.net/manual/ja/function.urldecode.php ここに書いてある通り、urldecode はエンコード文字 %## とプラス記号 ('+') を変換するだけの機能で、 他の文字は放置されます。変換対象がないからと いってエラーになることもありません。 質問2: URLに使用できる文字というのは決まっています。 URLエンコードとは 『URLに使用できない文字を、使 用できる文字の範囲に収まるように変換する』操作 です。 URLとして使う文字は全てエンコードすべきです。 ブラウザによってはURLに使えない文字でも問題なく 動くこともありますが、それは『親切なブラウザだね』 程度に考えておきましょう。 ※エンコードの問題は、ブラウザよりもサーバのほうで ダメになるパターンのほうが多いですよ。
その他の回答 (1)
urldecode関数はデコード可能な部分のみデコードする関数です。 Qiita - [PHP] リクエストパラメータ・セッションに関するまとめ http://qiita.com/mpyw/items/7852213f478e8c5a2802 こちらの記事で詳しく書いているのでご覧ください。GETに関して、 「パーセントエンコードされていない 半角スペース と 改行 と NULLバイト の混入は一切認められない。」 と書きましたが、これはリクエストヘッダーレベルで見たときのことを指します。ブラウザがリクエストヘッダーを生成する段階で自動的に無効な文字列をエンコードするように実装されていれば問題なく処理されるでしょう。ですがこれに依存するのは互換性を考えると当然避けるべきです、基本的にはすべてurlencode関数もしくはrawurlencode関数を通すようにしましょう。
お礼
回答ありがとうございます エンコードすることにしました。リクエストパラメータも奥が深いですね。勉強になりました
お礼
回答ありがとうございます >質問1 これで安心して使えます。ありがとうございました >質問2 サーバのほうでもダメになるのですね 全てエンコードするようにしました。