• ベストアンサー

PHPにて

PHPにて urldecode($_POST["マルチバイト文字列"])という使い方は問題ないのでしょうか? 例えば、 $_POST["test"] = "あいうえお" だとします。 POST値がエンコードされたもの(%E%D%c%A9...等)ではなくマルチバイト文字列だとして そのPOST値に urldecode($_POST["test"]) と処理しても問題ないのでしょうか? ご教授お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

URLエンコードは、%で始まって、0-9A-Zの2文字が続く、というルールで決まっているので、 マルチバイトの文字列にurldecode関数で処理しても、URLエンコードされた文字の範疇にないため、そのまま値が返されるのではないでしょうか。

kmjbnhgfcrgt
質問者

お礼

回答ありがとうございます。 自分でもデバッグ等して問題ないことを確認したのですが、 見落としや知識不足によるミスがないか不安になり投稿しました。 回答をいただけて安心しました。 ありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

質問の意図がわからないのでなんとも言えませんが、 $_POSTで受け取ったデータはすでにでコードされていませんか?

kmjbnhgfcrgt
質問者

補足

回答ありがとうございます。 元のソースが同じロジックを何度も通るような造りなのですが $_POST["test"] = urldecode($_POST["test"]); $_SESSION["test"] = $_POST["test"]; 上記記述があり、デバッグをすると この $_POST["test"] にマルチバイト文字列が入っていたり エンコード済みのコードが入っていたりします。 なので、コードが入ってる場合は問題ないですが $_POST["test"] = "あいうえお"; 等、$_POST["test"]にマルチバイト文字列が入ったままの状態で $_POST["test"] = urldecode($_POST["test"]); URLデコードしても問題はないのかと疑問に思いました。 引き続き、ご教授よろしくお願い致します。

関連するQ&A

専門家に質問してみよう