PHP memo

2006年秋からPHPを使うことが多くなった。オープンソースソフトのほとんどがPHPで書かれているから必要に迫られたということ。しかし、PHPスクリプト(言語、コード)の文法や意味はほとんど知らない。知らなくても、どんなPHPコードを書いて実行するとどんな結果になるかは分かる。だから見よう見まねでPHPを改変することを試行錯誤でやってきた。PHPで書かれたSNSソフトもおなじように改変してサーバに設置し運営している。

前々からPHPを勉強しようと思っていたが遅々として進まない。勉強して分かったと思っていてもすぐ忘れるのでメモをとることにした。


PHPコードは、HTML文書の中に、<?php と ?> で囲んで書くだけだ。ただし、そのHTMLファイルの拡張子は .html ではなく .php にする。ブラウザが、この拡張子のときは、そのファイルの中に php コードがあると判断して、PHPインタープリータを動かしてくれる。PHPインタープリータは、PHPコードを解釈して実行してくれる。<?php は <? でもよい。

たとえば、<?php echo "こんにちは"; ?> というPHPコードを解釈すると、そのコードの位置に、「こんにちは」という文字列を埋め込んでくれる。言い換えると、<~> の部分が「こんにちは」で置き換えられたHTMLファイルが作られて、ブラウザで表示されるということだ。それなら、最初から「こんにちは」と書いておけばよいではないか・・・。この場合はそのとおりだ。

たとえば、ブラウザでphpファイルを開いたときの時刻を表示するphpコードを書いてみる。

<?php$time = date("西暦Y年n月j日 Ah:i");print($time);?>
このphpは以下のように表示される。
西暦2017年5月30日 AM06:11

文字修飾をしてみよう。赤色の太字で時刻を表示する。
<font color=red weight=bold><?php$time = date("西暦Y年n月j日 Ah:i");print($time);?></font>
西暦2017年5月30日 AM06:11

dateで得られた値(この場合は文字列)を$timeに代入し、$timeをprintで印刷(表示)するというPHPコードだ。printはechoと同じである。

$time のように先頭が$ではじまる文字列を、PHP変数という。date はPHPで用意されている関数で、それに続く(~)は date の引数(パラメータ)だ。Y n j Ah i はdate関数でその意味が決められている。Y は4桁の西暦年、n は月・・・というように決められている。2008年9月の場合、Yn は 20089 、ym は0809 に置き換えられる。"~" は文字列データを示す。

PHPコードでは、半角空白や改行は無視される。ただし、全角の空白は"~"のなかでは空白の文字だが、それ以外に記述するとエラーになるので注意が必要だ。なお、ブログなどでWYSIWYGエディタで作成すると改行は、<br>に変換されることがあり、そのときはPHPエラーになる。

PHPコードの構造を分かりやすくするために以下のように記述をするが、転写すると ; のつぎに <br> が入っていることがあるので注意する。また、文字コード系は、Unicode(UTF-8)に統一するのが望ましい。JISやEUCを使うと文字化けが発生したり、PHPエーになったりすることが多い。

<?php
$time = date("西暦Y年n月j日 Ah:i");
print($time);
?>

〔注〕時刻はPHPファイルが保存されているサーバの時刻になる。本サイトは米国にあるので、日本時刻で表示するときは、こちらのようにする。
〔参考リンク〕