GETメソッドでフォームデータを送信すると、テキストボックスなどに入力された全角文字や半角英数字、あるいはクリックされたボタンの全角文字のvalue属性値などは、すべて「%」で始まる半角英数字形式に変換されます。この変換を「URLエンコード」といい、自動的に行われます。このURLエンコードされた文字列を通常の全角文字の状態に戻すには、urldecode()関数を使います。引数にURLエンコードされた文字列を指定すると、元に戻された文字列が返されます。
この例では、HTMLフォームの内容をGETで送信しています。送信後のブラウザのアドレスを見ると、送信データがURLエンコードされていることが分かります。それをurldecode()関数で元に戻した結果を表示しています。
<?php header("Content-type: text/html; charset=utf-8"); if(isset($_GET["btnExec"])){ //受け取ったクエリ文字列をそのまま表示 echo $_SERVER["QUERY_STRING"] . "<br><br>"; //クエリ文字列を元に戻して表示 echo urldecode($_SERVER["QUERY_STRING"]) . "<br><br>"; //スーパーグローバル変数で表示 echo $_GET["inputdata"] . "<br>"; echo $_GET["btnExec"] . "<br><br>"; } ?> <!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> </head> <body> テキストボックスに値を入力して「送信」ボタンをクリックしてください。 <form action="<?=$_SERVER["PHP_SELF"]?>" method="GET"> <input type="text" size="40" name="inputdata"> <input type="submit" name="btnExec" value="送信"> </form </body> </html>