カテゴリー
Ruby

Hashクラスについて知ろう

この章ではHash(ハッシュ)クラスについて説明します。
Hash(ハッシュ)クラスにはハッシュに対して様々な操作をすることが出来るメソッドなどが多数あります。
初めにハッシュが指定したキーを持っているかどうかを調べるkey?メソッドについて説明します。
では例をみてみましょう。9 9もし、そのキーが存在しているならばtrue、存在していないのならばfalseを返します。
結果は「そのキーは存在します」です。

次にkey?メソッドと同じ働きをするhas_key?メソッドについて説明します。
では例をみてみましょう。9 9もし、そのキーが存在しているならばtrue、存在していないのならばfalseを返します。
結果は「そのキーは存在します」です。
次にkey?メソッドと同じ働きをするinclude?メソッドについて説明します。
では例をみてみましょう。99 もし、そのキーが存在しているならばtrue、存在していないのならばfalseを返します。
結果は「そのキーは存在します」です。

次にkey?メソッドと同じ働きをするmember?メソッドについて次に説明します。
では例をみてみましょう。99 もし、そのキーが存在しているならばtrue、存在していないのならばfalseを返します。
結果は「そのキーは存在します」です。
次にハッシュが指定した値を持っているかどうかを調べるvalue?メソッドについて説明します。
では例をみてみましょう。99 もし、その値が存在しているならばtrue、存在していないのならばfalseを返します。
結果は「その値は存在します」です。

次にvalue?メソッドと同じ働きをするhas_value?メソッドについて説明します。
使い方はvalue?メソッドと同じです。
では例をみてみましょう。99 もし、その値が存在しているならばtrue、存在していないのならばfalseを返します。
結果は「その値は存在します」です。

次にハッシュに要素が存在するかどうかを確認するempty?メソッドについて説明します。
では例をみてみましょう。99 もし、ハッシュに要素が存在しているならばfalse、存在していないのならばtrueを返します。
結果は「要素があります」です。

次にハッシュのキーを探し出して、そのキーと値を削除するdeleteメソッドについて説明します。
では例をみてみましょう。
999 指定したハッシュのキーとその値を削除します。
この例ではdeleteメソッドで9を削除したので、key?メソッドで調べても存在しません。

次にハッシュのすべての要素を削除するclearメソッドについて説明します。
では例をみてみましょう。99 ハッシュのすべての要素を削除します。
結果は「{}」です。つまりカラです。
次にハッシュの中から指定したキーと同じ要素を探し出して、見つかったのならばその要素の配列を作成するassocメソッドについて説明します。
基本構文は以下の通りです。9 では例をみてみましょう。9 9

次にハッシュの要素を他の要素に置き替えるreplaceメソッドについて説明します。
では例をみてみましょう。99 元のハッシュの要素を新たなハッシュの要素に置き替えます。
結果は9です。

カテゴリー
Ruby

stringクラスについて知ろう

この章ではstring(文字列)クラスについて説明します。
今まではダブルクォートやシングルクォートを付けた文字列を扱ってきましたが、これらはstringクラスのオブジェクトです。
「”犬 “」という文字列は9と書いても同じ意味になります。
ここからはstringクラスに関する便利な機能について説明します。
初めに文字列のサイズを取得する方法について説明します。
例をみてみましょう。9 「文字列.length」と言う形式で日本語や半角英数字や全角英数字などのサイズ(文字数)を取得できます。
この例の結果は上から「5」と「8」です。
バイト数を取得したい場合は9と言う形式で取得します。
では例をみてみましょう。99
次はsplitメソッドについて説明します。
では例をみてみましょう。99 文字列を特定の文字で分割して配列にします。
区切り指定文字は配列には入りません。
この例は文字列を9で区切って、それを配列にします。
結果は9という配列を出力します。
次の例をみてみましょう。9 文字列の中身を1文字ずつ配列で取り出したい場合は9と、記述します。
結果は9です。
次の例をみてみましょう。9 第二引数(先頭から2つ目の引数)は文字列を何個の要素に分割したいかを記述します。
変数aの文字列は9という文字列で一部構成されていますが、これはカラ文字を意味しています。
カラ文字も含めて分割したい場合は第2引数をマイナス指定します。

9でもマイナスであれば何でもいいです。
この例の結果は9です。
このカラ文字を分割時に削除したい場合はsplitメソッドの第 2引数に0を指定してください。
もしくは9と、0を付けなくてもいいです。
結果は9です。
次の例をみてみましょう。9 文字列を2つの要素を持つ配列にしたいのであれば第2引数には2を指定します。
結果は9です。
「”猫”」と9の2つに分割されています。9 次は文字列から要素を取り出したり、文字列の要素に新たな要素をセットする方法について説明します。
では例をみてみましょう。9 9と言う形式で指定するとそれに応じた文字列が取得できます。
添え字は一番前が0で次が9と数えます。
これは配列の添え字と考え方は一緒です。
この例の結果は「s」です。
その他の例をみてみましょう。9 日本語でも同じく使用できます。
結果は「あ」です。9 第 2引数を指定すると取り出す個数を指定できます。この例の場合は0番目の添え字から3個取り出すと言う意味になりますので、結果は「str」です。
次は添え字を使って、文字列の一部の中身を変えます。9 添え字で指定した位置に文字を上書きしたい場合には9と言う形式で指定します。
結果は「stoing」です。
次は「ここからここまで」という指定方法で要素を上書きする方法について説明します。9 「a[2..5]」は文字列の2番目から5番目まで要素を9で置き替えるので、答えは「star」になります。

次は文字列同士をつなげる方法について説明します。
では例をみてみましょう。9 文字列同士をつなげて新しい文字列を作成するには「+」を使用します。
結果は「string123」です。
他の方法でも文字列同士をつなげることは出来ますので例をみてみましょう。99 文字列同士をつなげる方法は2つあり、1つ目は92つ目は9を使います。
これらを使った場合は元の文字列自体の値が変わります。

次は文字列同士を比較する方法について説明します。
では例をみてみましょう。9 文字列同士が一致しているかどうかを調べるには9を使います。
一致していればtrue、一致していなければfalseになります。
次の例をみてみましょう。9 文字列同士が一致していないかを調べるには9を使います。
一致していなければtrue、一致していればfalseになります。

次の例は文字列を繰り返す演算子について説明します。9 「文字列*繰り返す回数」という構文で文字列を繰り返すことが出来ます。
この例では9と言う文字列を3回繰り返しています。
結果は9です。

次は文字列の中の文字が何番目にあるのかを調べる方法について説明します。99 指定の文字列の中で検索したい文字が何番目にあるのかを調べ、その位置を数値で返します。
indexメソッドは前から検索を始めて、rindexメソッドは後ろから検索を始めます。
しかし、何番目にあるのかを数えるのはindexでもrindexでも前からです。
a.index(“n”)は前から検索をするので、結果は4です。0から数えて4番目にあると言う意味です。
a.rindex(“n”)は後ろから検索するので、結果は16です。
ここで注意して欲しいのは後ろから指定文字を検索をするのですが、結果である指定文字の位置の特定は前から数えると言うことです。
では次に進みます。
文字列の中の何番目にあるかでは無くて、ただその文字が存在するかどうかを調べるには9を使います。9 文字列の中に検索文字が存在するかどうかを調べます。
含まれるときはtrue、含まれないときにはfalseを返します。
では例をみてみましょう。9 結果は「yes」です。
次は文字列の一部分を削除するslice!メソッドについて説明します。
では例をみてみましょう。99 結果はbを削除したので「acd」です。
次の例をみてみましょう。99 結果はb,c,dを削除したので「aefg」です。
次の例をみてみましょう。99 結果はb,c,dを削除したので「aefg」です。

次はユーザーに何かを入力してもらう時に使うgetsメソッドについて説明します。
では例をみてみましょう。9 まず初めに「年齢は?」と入力するように促します。
そして、「65」と、入力すると、その入力した結果がageに代入され、結果が出力されます。9 このようにユーザーに入力させるためのメソッドがgetsメソッドです。
ここで気を付けてほしいことは入力値が入っているage変数には改行も一緒に入っていますので9と出力しても、以下のように9だけが改行されてしまいます。9 そこでこの改行を消す機能がRubyには用意されていますので、次の例を見てみましょう。99 chompメソッドは、文字列の最後の改行文字を取り除いた新たな文字列を作成します。
この例ではユーザーが入力した文字列の改行を取り除きます。
結果は以下の通り、改行が取り除かれているのが分かります。9 その他にchomp!メソッドもありますが、これは元の文字列自体から改行を取り除いたものを作成します。9 では例をみてみましょう。9 結果は「abcd」です。

次はchompメソッドと同じようなメソッドのchopメソッドやchop!メソッドについて説明します。
chopメソッドは文字列の末尾が改行でも普通の文字でも関係なく、末尾を削除した新しい文字列を作成します。
chop!メソッドはchopメソッドと機能が同じですが、新しい文字列を作成するのではなく、元の文字列自体から末尾の文字を取り除いたものを作成します。9 では例をみてみましょう。9 結果はdが取り除かれているので「abcです」が出力されます。
chopメソッドの例をみてみましょう。9 ユーザーに入力してもらう場合はgets.chopと、記述します。
結果は以下の通りです。9
次はeach_lineメソッドについて説明します。このメソッドは繰り返し構文の一種ですが、文字列を指定文字で分割して、一行ずつ取り出してくれます。
では例をみてみましょう。99 引数を記述するとその文字列が改行文字になります。
引数を省略するとデフォルトでは9が改行文字になります。9 改行文字を取り除いて文字列を出力したい場合は以下のようにchompを付けます。9 結果は「123」です。
次はeach_byteメソッドについて説明します。
では例をみてみましょう。99 each_byteメソッドは文字列の中の一文字一文字のバイトコードを取り出して、変数に入れて出力するメソッドです。
結果は「8297」です。
R の文字コードが82で、aの文字コードが97なので、8297が出力されます。

次はeach_charメソッドについて説明します。
では例をみてみましょう。99 このメソッドは文字列の一文字一文字に対して繰り返し操作を加えるメソッドです。
結果は「1+2+3+4+」ですが、このように文字と文字の間に何か他の要素を入れたりすることが出来ます。
変数の値を他の文字と結びつけるには9と書きます。
次は文字列の中から特定の要素を削除するdeleteメソッドとdelete!メソッドについて説明します。
では例をみてみましょう。99 deleteメソッドは文字列の中から特定の要素を削除した新しい文字列を作成します。
delete!メソッドは新しい文字列を作成するのではなく、元の文字列から特定の要素を削除した文字列を作成します。
結果は「いうえお」です。
次の例をみてみましょう。9 結果は「いうえお」です。
次は文字列を浮動小数点数(Floatオブジェクト)に変換するto_fメソッドについて説明します。
では例をみてみましょう。9 文字列を浮動小数点数に変換しますが、3.789@の中の「@」のように浮動小数点数とは関係ない要素は削除されます。
9のようにすべて浮動小数点数とは関係ない要素の場合は「0.0」が出力されます。
結果は以下の通りです。9

文字列を10進数の整数に変換するto_iメソッドについて説明します。
では例をみてみましょう。99 文字列を10進数の整数に変換しますが、小数点以下は削除されます。
3.789@の中の「@」のように整数とは関係ない要素は削除されます。
9のようにすべて整数とは関係ない要素の場合は0が出力されます
結果は以下の通りです。9
次はreverse!メソッドとreverseメソッドについて説明します。
では例をみてみましょう。99 これは文字列を逆順に並べるメソッドです。
reverseメソッドは文字列を逆順に並べた新しい文字列を作成します
reverse!メソッドは元の文字列の順序を逆順にしたものを作成します。
結果は「おえういあ」です
次の例をみてみましょう。9 結果は「おえういあ」です。
次は文字列を他の文字列に変更するreplaceメソッドについて説明します。
では例をみてみましょう。9 9このメソッドは文字列を別の文字列に変更します。
この例では「あいうえお」を「かきくけこ」に書き替えます。
結果は「かきくけこ」です。

次は小文字を大文字に変換するupcase!メソッドとupcaseメソッドについて説明します。
では例をみてみましょう。99 upcaseメソッドは小文字を大文字に変換した新しい文字列を作成します。
upcase!メソッドは元の文字列を小文字から大文字に変換した文字列を作成します。
結果は「ABCD」です。
次の例を例をみてみましょう。9 結果は「ABCD」です。
次は大文字を小文字に変換するdowncase!メソッドとdowncaseメソッドについて説明します。
では例をみてみましょう。99 downcaseメソッドは大文字を小文字に変換した新しい文字列を作成します。
downcase!メソッドは新しい文字列を作成するのではなく、元の文字列を大文字を小文字に変換した文字列を出力します。
結果は「abcd」です。
次の例をみてみましょう。9 結果は「abcd」です。
次は文字列がカラかどうかを調べるempty?メソッドについて説明します。
では例をみてみましょう。9 9文字列がカラであるならばtrue,文字列に何か入っていればfalseです。
結果は「カラです」が出力されます。
次は文字列の中の特定の文字の要素数を調べるcountメソッドについて説明します。
では例をみてみましょう。9 99は文字列の中にaが何個あるかを調べ、9は文字列の中にabが何個あるかを調べ,9は文字列の中にaからzまでのアルファベットが何個あるかを調べています。9 先頭の小文字を大文字して、残りの文字列は小文字にするcapitalize!メソッドとcapitalizeメソッドについて説明します。
では例をみてみましょう。9 9capitalizeメソッドは先頭の文字を大文字して、残りの文字列は小文字にする新しい文字列を作成します。
capitalize!メソッドは新しい文字列を作成するのではなく、元の文字列の先頭の文字を大文字して、残りの文字列は小文字にする文字列を作成します。
結果は「Abcd」です。
次の例をみてみましょう。9 結果は「Abcd 」です。
次は文字列の最初の文字を取り除くchrメソッドについて説明します。
では例をみてみましょう。9 9取り除かれた文字列の最初の文字が返されます。
結果は文字列の最初の文字「A」が出力されます。
次は文字列をカラ文字にするclearメソッドについて説明します。
では例をみてみましょう。9 9結果は文字列をカラにするので9です。
つまりカラ文字です。

カテゴリー
PHP

フォームからの情報を受け取ろう

この章ではフォームについて説明します。
会員登録で名前、住所などを入力したことがあると思いますが、これがフォームです。
フォーム自体はHTMLで作るのですが、その入力した内容をサーバーに送るにはPHPを使います。
以下のプログラムはHTMLで作成しています。
ファイル名は1です。1111111 このHTMLファイルを画面に表示させると以下のようになります。
ここから「名前」「メールアドレス」などの情報を送信して、PHPプログラムで処理するというプログラムを作成します。1 HTMLの説明は後ほどしますが、ここでは送信方式について説明します。1 =>action属性の値にはデータの送り先を指定します。
この例で説明しますと1から1にデータを送ることを意味します。
method属性にはサーバへの送信方法を指定します。
フォームからサーバへの送信方法にはPOSTとGETの2つがあります。POSTを指定した場合、フォームに入力したデータはHTTPプロトコル(後ほど補足で説明します)という通信の機能によりリクエストボディつまり本体部分に入力されてサーバに送られますが、送る文字数には制限はありません。
POSTの場合は入力したデータの他にもWebブラウザの種類やバージョンなどの情報、どの言語を使っているか、どのサイトから訪問してきたかなどの情報も一緒に送信します。
GETはURLの後ろに1を付けて送ります。
複数の情報を付加する場合には1を使います。
つまり1が1つの情報になりますので、複数の情報を付け加えたい場合は1で連結します。
例えば1のように連結します。
つまり、フォームの送信データがURLとして渡されると言うことです。
そのため送信する情報には制限が有り、最大で約2000文字位です。
例を示すとヤフーなどで検索していると1のように1の後ろに1が連なっているURLを見たことがあると思いますが、これはGETでサーバにデータを送っているのです。
そして、サーバはその検索語を元に検索結果を返しています。
get方式でデータを送るときにはmethodの値をgetに変更します。1 補足ですがHTTPプロトコルについて説明します。
HTTPプロトコルとはユーザーのコンピューターとサーバの間のやり取りに関する通信規約であり、ユーザーのブラウザからリクエストを発信し、その結果をサーバがレスポンスするとその処理が完結すると言う単純な構造から出来ています。1 属性にtextを入れると1行のテキスト入力欄を作成します。
size属性はテキストボックスの横幅で、valueは入力欄の初期値です。
1と入力すれば最初から入力欄に「猫」が入力された状態になります。name 属性はtextに名前を付けるためにあります。
11 これは1行のテキスト入力欄です。
name 属性はtextに名前を付けるためにあります。11 rowsは入力欄の行数を入力し、この例では5行分になります。
colsは1行に入力できる文字数です。11 type属性にradioを入れるとラジオボタンを作ることが出来ます。
name属性はradioに名前を付けるためにあります。11 <select>はセレクトボックスを作成します。
name属性はセレクトボックスに名前を付けるためにあります。11 type属性にcheckboxを入れますとチェックボックスを作ることが出来ます。
name属性はチェックボックスに名前を付けるためにあります。1 1属性に「submit」を入れると送信ボタンを作ることが出来ます。
value属性にはsubmitボタンに付ける名前を書きます。1
次は送信先のPHPの部分について説明します。
以下のファイルは1です。1111111Lesson21.phpにLesson21.htmlの中のフォームデータを送る方法について説明します。
ユーザーが送信ボタンを押すとmthodに指定した方式で送信されます。
post方式は大量のデータを送るときに便利です。
1を使うことで、POSTメソッドで送信されたHTMLのデータを取得できます。
1については後ほど説明します。
例えばpost方式で送信した以下のフォームのメールアドレスのデータを得たいのであればname属性の値をキーとして1と、記述してデータを受け取ります。1 GRTで送信された場合には1で受け取ります。
getの場合はフォームのmethodの部分を以下の通りgetと書きます。1 そして$_GET変数を使うことで、GETメソッドで送信されたフォームのデータを取得できます。
では具体的に11について説明します。
フォームから送信されたデータを受け取るには送信方法がPOSTであれば1GETであればで1で受け取ります。
まずはPOSTから説明します。
1を押しますとデータが送信されますが、そのデータを受け取るには以下の構文で受け取ります。1 この構文を見ていただくと分かりますが1は連想配列です。
フォームで入力された氏名を受け取りたいのであれば
1と記述してデータを受け取ります。

name属性の値を連想配列のキーに入れます。1 フォームのメールアドレスを受け取りたいのであれば1と記述してデータを受け取ります。
では実際、PHP側でどのようにデータを受け取っているかを見てみましょう。11にはフォームの名前欄に入力された情報が連想配列の形で代入されます。
例えば1 と、名前を入力して1 を押しますと1には「近藤雅夫」と言うデータが代入されます。
つまり1と、同じことを意味します。

ですので、
結果は1が表示されます。
「htmlspecial」はユーザー定義関数ですが、これについては後ほど説明します。

次にempty関数について説明します。
通常、フォームからデータを送った時、そのデータが間違っていないのかをチェックする必要があります。
例えば名前が入力しているかどうかをチェックして、入力していないのならば入力するようにメッセージを表示することが必要になります。
会員登録で名前の入力が間違っていて、もう1度入力するようにメッセージを表示された経験が1度はあると思います。
empty関数は引数に値が入っているかどうかを確認する関数であり、〇数字の0
〇文字列の1 〇何も入ってないカラ文字、
〇null
の場合はTRUEで、それ以外はFALSEを返します。
nullとは何も変数に入ってない状態をさします。
ですので1に仮に何もデータが入っていないのならばelse以下の1が出力されます。

似たような関数としてisset関数があります。
この関数は変数がセットされているのかを調べる関数です。
変数 が NULL 以外であれば TRUE、そうでなければ FALSE を返します。
以下のようにissetは値がカラでもTRUEを返すので、送信データがカラでもそのまま警告もなく進んでしまいます。1 結果は以下の通りです。
「値が入っている」
カラではなくで本当に値が入っているか確認するにはempty関数かstrlen関数を使いましょう。
strlen関数については説明しましたが、もう一度復習しましょう。1 strlen関数は文字列の長さを測る関数です。
引数に文字列を設定すると長さを返してくれます。
長さとはバイト数のことです。
半角英数字は1文字1バイトとして数えています。
おおよそ日本語のようなマルチバイト文字は1文字2バイトですが、文字コードがUTF-8では概ね3文字バイトで表されます。1 結果は以下の通りです。
21バイト
13バイト
ではstrlenをif文で使ってみましょう。111
結果は以下の通りです。
値が入っている
値が入ってない
値が入っている
strlenをこのように使うことによってissetと違ってカラ文字には値が入っていないことを確認できます。
これでフォームの名前や住所などがカラの場合にはメッセージを表示させることができます。

ここで補足としてis_numeric関数について説明します。1 この関数は変数が数値であるかどうかを調べることが出来ます。
変数が数値、または数値文字列ならばTRUEを、そうでなければFALSEを返します。
数値文字列とは造語ですが、例えば1のように数値をダブルクォートやシングルクォートで囲んでも数値とみなされます。
このis_numeric関数はフォームの入力値を数字に設定しているのに文字を送ってきてしまう場合にチェックすることが出来ます。11
結果は以下の通りです。
数字です
数字以外が入っています
数字です
次はチェックボックスのデータをPHP側に渡す方法について説明します。1 チェックボックスでは複数の箇所に印を付けることが出来ますが、印をつけた部分をすべてPHPプログラムに送りたい場合はどうするかと言いますと、1のようにname属性の値の部分に1を付けてください。
これを付けることにより、配列としてPHP側にデータを渡すことができます。
1にはチェックボックスでチェックしたデータが配列の形式で入っていますのでforeachですべてを取り出すことが出来ます。1 次に以下のユーザー定義関数についての説明をします。1 これはhtmlspecialと言うユーザー定義関数ですが、この関数を説明するより先にhtmlspecialchars関数について説明します。
htmlspecialhars関数はフォームから入力した文字や数値を画面に表示するときには必ずhtmlspecialchars関数を使います。
これは外部からの悪質なサイトへの攻撃を防ぐことに有益な関数です。1 htmlspecialchars関数の機能は指定した文字列を変換スタイル、文字コードに従ってHTMLでの特別な意味を持った文字を表示可能な形式に変えます。
具体的には
〇 ‘&’ (アンパサンド) は1に変換されます。

〇「変換スタイル」に1が設定されている場合、ダブルクォートは1になり、シングルクォートは1になります。

〇 ‘<‘ (小なり) は1に変換されます。

〇 ‘>’ (大なり) は1に変換されます。
「変換スタイル」はデフォルトでは1が設定されています。
1はダブルクォートは変換されますが、シングルクォートは変換されません。
1はシングルクォートも1に変換してくれますので、変換スタイルは1に設定してください。
構文の「文字コード 」は変換をどの文字コードで行うかを指定します。

この例では1を使用しています。
では説明をしていきます。
ユーザーが入力したデータが1に入っていますので、このデータをhtmlspecial 関数を呼び出して、htmlspecialchars関数で処理しています。1 では次にユーザー定義関数の中身について説明します。
このユーザー定義関数はよく使う関数なので覚えておいてください。1 is_array関数は引数が配列の場合にTRUE、配列ではない時にFALSEになる関数です。
引数が配列ではない時に1 が実行されますので、1
1などはここで処理されます。
問題は引数が配列の時です。
配列の場合は1が実行されますが、1は指定した配列の要素のすべてを指定した関数に渡すという機能を持った関数です。1 array_map関数は渡されてきたデータが配列の場合に配列の要素を1つずつhtmlspecial関数の引数$strに渡すので、その要素は最終的には以下の箇所で処理されます。 1 図式にすると以下の順番で進みます。  
以下の過程を配列の数だけ繰り返します。1POST方式でのデータの送信方法については説明したので、今度はGET方式でデータを送ってみましょう。
以下のファイル名は1です。111

Lesson21.htmlから以下の1にGET方式で送ります。11111 GETで送信された場合はURLの1番後ろに1を付けて送ります。
複数ある場合は111で連結できます。
しかし、文字数に制限があり(2000文字くらい)、少ないデータを送るのに適しています。
以下の形式でGETのデータを受け取ります。1 例えば次の箇所でGETのデータを受け取っています。1 データを1から1にGETで送ると以下のようにURLに埋め込んで送ってくれます。
つまり、name 属性の値と入力された値が1で連結されます。
渡すデータが複数ある場合には各データを1で連結します。
例えば以下のように送信されます。1 上のURLの中に1のような箇所がありますが、これはブラウザがURLエンコードを行ってくれているからです。
日本語などはURLとして認められていないので、通常はそのままでは送ることはできませんが、URLエンコードを行うとURLとして認められている文字に変換して送ってくれます。
このエンコードの作業はフォームから送る場合には自動で変換してくれます。
では例を見てみましょう。
フォームで送る場合には勝手にブラウザがURLエンコードを行ってくれるのですが、リンクに埋め込んでデータを送る場合には自身でURLエンコード処理を行わなくてはいけません。
下のファイル名は1です。11 Lesson27.phpから下の1にデータを送ります。11
Lesson27.phpの中に1と言う箇所がありますが、urlencode関数は日本語などURLとして認められていない文字を規定に則って変換して送ってくれます。
urlencode関数を記述しませんと文字化けしますので気を付けてください。
$_GETのキーには以下の「name2」を入れます。1 以下のリンクをクリックしますと「近藤」と出力されます。1