パラメータの取得−2複数のパラメータの取得方法と、文字のデコードについて学びます。HPのソースコードを覗いてください。次に示すHTML文の記述があるでしょう。INPUTフォームが2箇所ありますね。(HPには、2つの入力欄があるので当然ですよね)このように2つの入力を持った場合、CGIプログラムにはどのようにパラメータが渡されるのでしょうか?実行結果を見てください。GETの実験結果は、入力文字を変えていなければ、次のように表示しているはずです。区切られて渡されます。上記の場合get_txt1=GET%82%CC%8E%C0%8C%B1%81%7C%82Pget_txt2=GET%82%CC%8E%C0%8C%B1%81%7C%82Qの2つのパラメータが渡されたことになります。%で始まるコードは16進数を表しています。このルールから、HP上のどこの入力領域に、どのような文字列が入力されたかを、判断します。method="POST"の場合も標準入力に同じフォーマットでパラメータが渡されます。1日本語の'1'のコードは0x8250です。入力文字列は、%82%50(%82Pになっている)にならないでしょう?%50はASCIIコードの'P'です。ASCIIコードに存在する文字コードは、16進変換しません。<例題プログラムの解説>例題プログラムでパラメータの振り分けと、文字のデコードをしています。起動される事を前提で作られています。$bufferへパラメータの取り出しています。区切られて入ってくる事は説明しましたね。最初のパラメータが、$para[1]には2番目のパラメータが設定されます。'get_txt2=GET%82%CC%8E%C0%8C%B1%81%7C%82Q'が設定されています。$para[1]);パラメータは、「名前=値」のフォーマットで入ってきます。ここでも、split演算子で、'='を区切り記号にして、名前と値に分解します。$value2に「名前」と「値」が設定されます。'GET%82%CC%8E%C0%8C%B1%81%7C%82Q'が設定されています。/;変換規則に従い、tr演算子を使って'+'をブランクに変換します。その他」で解説)入力文字列を変更していなければ、この命令は、なにも行いません。hex($1))/eg;s演算子で16進コード文字列を数値に変換します。文字列置換」で解説)16進コードを正規表現で表せば、/%[a-fA-F0-9][a-fA-F0-9]/ですね。(例題プログラムと違いカッコを使っていないことに注意!)理由:16進コードのフォーマットは次の通りである。