自分用のメモです。
<explodeとsplitの違い>
explode:正規表現を使わない
split :正規表現を使う
処理的には、正規表現を使わない分
explodeのほうが早いらしい。
<ファイルポインタの移動>
rewind($fp):ファイルポインタを先頭に設定
<POSTとGETの違い>
POST:htmlのフォーム経由でデータをもらう場合
GET :htmlのURL経由でデータをもらう場合
フォーム経由はGETの場合もある(methodで指定)
<文字コード関係>
default_charset :ブラウザに対して使用している文字コードを明示する
mbstring.http_output :ブラウザに送るデータ(PHP 処理済みの HTML)を、
指定した文字コードに変換して送る設定
mbstring.internal_encoding :PHP内部エンコードで使用する文字コード
mbstring.http_input :ブラウザから送られてくる文字を、
どの文字コードかを判定するための順番
mbstring.detect_order :PHPの文字列中の文字コードを判定するためのコード順
mbstring.substitute_character:コード変換する際に、コードが変換できない
文字とかをどのように扱うかを指定します
内部コード(mbstring.internal_encoding)と、
出力コード(mbstring.http_output)が違う場合、
output_buffering を On に設定し、
output_handler を mb_output_handler に設定すること
<SJISを標準とする場合の設定>
default_charset = Shift_JIS
output_buffering = On
output_handler = mb_output_handler
mbstring.http_output = SJIS
mbstring.internal_encoding = EUC-JP
mbstring.http_input = ASCII,JIS,SJIS,EUC-JP
mbstring.detect_order = ASCII,JIS,SJIS,EUC-JP
mbstring.substitute_character = none
<EUCを標準とする場合の設定>
default_charset = EUC-JP
mbstring.http_output = EUC-JP
mbstring.internal_encoding = EUC-JP
mbstring.http_input = ASCII,JIS,EUC-JP,SJIS
mbstring.detect_order = ASCII,JIS,EUC-JP,SJIS
mbstring.substitute_character = none
<グローバル変数>
PHPの場合、メイン処理で宣言した変数は、
メイン処理から呼ばれるサブ関数内ではグローバル宣言をしないと使用できない。
つまり、PHPでグローバル変数(グローバルに扱いたい変数)を
サブ関数内で扱う場合は、そのつど関数内でグローバル宣言をする必要がある。
**********************************
サンプル1
----------------------------------
<>
global $a;
$a = 1;
sub();
print "a=$a";
function sub(){
$a = 2;
}
?>
----------------------------------
サンプル1結果:a=1
**********************************
サンプル2
----------------------------------
<>
global $a;
$a = 1;
sub();
print "a=$a";
function sub(){
global $a;
$a = 2;
}
?>
----------------------------------
サンプル2結果:a=2
<変数宣言>
明確に変数を宣言する必要はない。
言い換えれば、明確に変数を宣言することはできない。
つまり、
var $dat;
int $sum;
このような宣言ができないと言うことになる。
と言うか、変数の型自体が曖昧なのが問題か。
今までの経験上、明確に変数の型を宣言できないのは、
プログラム的にかなり危険だと思うのだが。
<フォームのvalueについて>
環境的な問題かもしれないが、フォームにおいてinputタイプがtextの場合、
value指定を行っていると、新たにデータを入力してPHPプログラムに
データを送信したとしても、新たに入力したデータは反映されずに、
元々value指定されているデータが送信される。
これに対する対処としては、valueデータをhtmlspecialcharsでくくってやる必要がある。
[input type=text name=dat value=".htmlspecialchars($dat)."]
※便宜上、”<>”は”[]”に置き換えている