第27回 掲示板を作ろう(8) -掲示板についてまとめよう - PHP基礎講座

PHP基礎編

Saity先生のPHP基礎講座

Lecutures on PHP

第27回 掲示板を作ろう(8) -掲示板についてまとめよう (その1)

 このエントリーをはてなブックマークに追加
  • 2週間ぶりにSaity先生復活!
  • 待ってました~。
  • さて、今日で掲示板についての講座は最後だ。そこで今回は、新しい掲示板の機能を作成するのではなく、今まで作成してきたものについて説明が足らなかった細かいところを補足していこうと思っているんだ。Saity先生のPHP基礎講座
  • なるほど。わからなかったところをじゃんじゃん聞いていこう♪
  • うんうん。ちゃんと今日の講義で理解していこうね☆ それでは今週も初めていくよぉ~
  • は~い♪

init関数について

  • 掲示板のプログラムについていきなり質問するけど、function.phpファイルで作成したinit関数はユキちゃん覚えているかな?
  • えっと・・掲示板のスクリプトの先頭で必ず呼び出していた初期設定を行なう関数でしたよね?Saity先生のPHP基礎講座
  • そうだね。初期設定を行なう関数だったね。その関数のおまじない部分を覚えているかな?
  • うーん。確か「文字コード関連」と記述されていましたね。
  • うん。まずは、文字コード関連のおまじない部分と言っていた箇所について簡単に説明をしていくよ。PHPのスクリプトでは、文字コード関連の設定を変えることで、設定した文字コードを使ってプログラムを動作させることができるんだ。
ini_set("output_buffering", "On");
 print文の出力などの出力バッファリングを有効にする設定

ini_set("output_handler", "mb_output_handler");
 出力の変換を有効にするために mb_output_handler を設定
 スクリプトの全ての出力を関数にリダイレクトすることができ、ここでは、
  mb_output_handlerにリダイレクトして文字エンコーディングは指定したエンコード
  に変換されます。

ini_set("default_charset", "EUC-JP");
 HTTPヘッダのcharsetを設定

mb_language("Japanese");
 使用する言語を設定

mb_internal_encoding ("EUC-JP");
 内部の文字エンコーディングを設定

mb_http_input("auto");
 HTTP 入力文字エンコーディングを検出

mb_http_output("EUC-JP");
 HTTP 出力文字エンコーディングの設定

mb_detect_order("auto");
 文字エンコーディング検出順序の設定

mb_substitute_character("none");
 置換文字を設定
 入力文字エンコーディングが 無効、または出力文字エンコーディングに文字コードが
  存在しない場合の代替文字を指定します。
  ここでは「none」が指定されており出力されません。
    
mb_regex_encoding("EUC-JP");
 カレントの正規表現用のエンコーディングを文字列を設定

ob_start("mb_output_handler");
 出力のバッファリングを有効にする設定
 ここでは、mb_output_handlerにリダイレクトして文字エンコーディングは指定した
  エンコードに変換されます。

header("Content-Type: text/html; charset=EUC-JP");
 HTMLの出力を変更する設定
  • 少し長くなってしまったけど、それぞれの意味はこんな感じなんだ。
  • うー。説明してもらってもまだ難しい。。。文字コードを設定するのは複雑で、しかも手間がかかってたいへんなんですね。
  • そうだね。これらを全部理解するのはPHPの動作をしっかり把握できていないといけないので、まだ難しいと思う。今は、それぞれの関数が持つ意味を何となくつかんでおこう。そうやって、少しずつ理解していくことも重要だよ。
  • ふむぅ。。。
  • でもほとんどの場合は上記の設定でEUC-JPを使って問題なく処理できるはずだよ。ここでは「EUC-JP」だけど、「UTF-8」などにも変更することもできるんだ。変更する際はソースの文字コードなども変更しないと文字化けするから気をつけて修正をしていこうね。Saity先生のPHP基礎講座
  • なるほど。文字コードの設定を変更したい場合はこの関数を使うとよさそうだわ。
  • うん。でも、この関数を使う前に文字コードの設定が設定ファイルでちゃんと設定されているほうが理想だけどね。
  • へぇー。設定ファイルなんてものがあるんだ。
  • そのとおり。またあとで説明するけど、PHPの様々な設定はphp.iniと呼ばれるファイルで設定できるんだ。使用文字コードはそんなに変更するものではないから、決まった文字コードがあるならphp.iniファイルで適切に設定をするべきだよ。

  



Pick Up Q&A

Q
array_mergeの再帰処理の動作について
 このエントリーをはてなブックマークに追加 
A
>1個になったとき$leftを返しますが、 >このとき、最終的な$leftはnullになるかと思います。 いいえ、最後は「渡された配列をそのまま」返します。要素が2以上あるときとの違いは(並べ替えずに戻るので...

>>続きを読む

再帰関数は最初の内は混乱しますが、非常に上手く使える場面もいずれ出てきます。これを機会に学んでいけるといいですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)