ホームにもどる      「パソコンについて」にもどる

PHP
  1. 変数の前には$をつける。
  2. 数字を変数の最初の文字にすることはできない。2字目からは数字を使うことはできる。
  3. echoで文字列を表示する時文字列は" で囲む。'で囲んでも表示されるが、変数を含んでいる時は、'で囲むと、変数に代入した値を表示することができない。"で囲む必要がある。変数は{ }で囲むべきである。そうでないと、変数の前後に日本語などがあると、表示されない。
    Namaeという変数を使った例である。
    $Namae="山田花子";
    echo "{$Namae}です。";
  4. 変数に代入した値だけを表示する時は、"で囲む必要はない。ただし"で囲んでも表示される。
    $Namae="山田花子です。";
    echo $Namae ;
  5. echo で表示した文を改行するには" " で囲んだ最後に<br>を書く。
    $Namae="山田花子";
    $Namae2="山田花子です。";
    echo "山田花子です。<br>";
    echo "{$Namae}です。<br>";
    echo $Namae2;
  6. ヒアドキュメントの記号は、始まりの時は右に空白を置かない。終わりの時は左右に空白を置かない。空白を置くとエラーになる。ヒアドキュメントの記号の右にコメントを記入してもエラーになる。
  7. 加算には変数の前あるいは後ろに++を置き、減算には、変数の前あるいは後ろに--を置く。
    $Suji=10;
    $Suji=++$Suji;
    echo "$Suji<br>";
    $Suji=++$Suji;
    echo "$Suji<br>";
    $Suji=++$Suji;
    echo "$Suji<br>";

    $Suji=10;
    $Suji=--$Suji;
    echo "$Suji<br>";
    $Suji=--$Suji;
    echo "$Suji<br>";
    $Suji=--$Suji;
    echo "$Suji<br>";
  8. 結合には.を使う。
    $Namae="山田花子";
    $Jusho="高知県高知市花田町1丁目  ";
    $Mojiretsu=$Jusho.$Namae;
    echo "$Mojiretsu <br>";
  9. クラス(class)はまとまった一つのプログラムで、そのクラスの具体例がインスタンス(instance)である。インスタンスを作成すると、自動的に実行されるクラス内の関数(function)をコンストラクタ(constructor)という。コンストラクタの関数名はクラス名と同じになる。
  10. クラス変数の頭にはvarをつける。
  11. ラス内の関数の中ででクラス内変数にアクセスするには、クラス内変数を&Hensu とすると、&this->Hensuと書く。
  12. /^[^@]+@([-a-z0-9]+\.)+[a-z]{2,}$/
    これは、アドレスの正規表現である。どういう意味なのだろうか。まず正規表現は / で囲んで表示される。次に正規表現は文字に特別な意味を持たせている。特別な意味を持っている文字をメタ文字と言う。^ は文字列の最初を示し、$ は文字列の最後を示す。^ や $ はメタ文字なのである。[^@] の ^ は文字列の最初という意味でない。[ の次に ^ が来る時は、 ^ の後ろの文字以外という意味になる。[ ] は [ ] の中の文字のどれか1個という意味になる。だから [^@] は @ 以外の文字1個という意味である。+ は1個以上の連続する文字である。だから [^@]+ は @ 以外の文字が1個以上連続しているという意味になる。[^@]+@ は @ 以外の文字が1個以上連続しており、その次に @ が来るのである。a-z はアルファベットの小文字すべてを表す。 だから [a-z] はアルファベットの小文字のどれか1個という意味になる。0-9 は10個の数字を表す。[a-z0-9] でアルファベットの小文字と数字のどれか1個を表す。選択の範囲を - (ハイフォン)まで広げたのが、[-a-z0-9] である。ハイフォンとアルファベットの小文字と数字のどれか1個という意味になる。この後ろに + があるから、[-a-z0-9]+ はハイフォンとアルファベットの小文字と数字のどれか1個が1個以上連続しているという意味になる。. はメタ文字として使う時は、任意の1文字を示す。\ はこの後にくる文字はメタ文字としてでなく、通常の文字として使うという意味になる。だから \. で . (ドット)の意味になる。([-a-z0-9]+\.)+ はハイフォンとアルファベットの小文字と数字のどれか1個が1個以上連続しており、その後に . がついているのが、また1個以上連続しているという意味になる。{2,} は前の文字が2回以上連続するという意味である。もし {2} なら前の文字が2回連続するという意味になる。[a-z]{2,} はアルファベットの小文字のどれかが2回以上連続するという意味になる。だから /^[^@]+@([-a-z0-9]+\.)+[a-z]{2,}$/ で 「@ 以外の文字が1個以上連続しており、その次に @ が来て、その次にハイフォンとアルファベットの小文字と数字のどれか1個が1個以上連続してその後に . がついているのが、また1個以上連続しており、その次にアルファベットの小文字のどれかが2回以上連続する」という意味になる。
    {(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#^*\/:@&=_-]+)}
    はURLの正規表現である。URLは中に // を含むため、正規表現は / で囲まずに、{ } で囲んで表現される。?は直前の1文字が0個か、1個を示すから、この場合は、sがあるかないかである。つまりhttps?はhttpかhttpsになる。|はorの意味である。つまりhttps?|ftp|newsでhttp、https、ftp、newsのどれかがくるという意味になる。( ) は単にひとつのまとまりを囲んでいるだけで、特別な意味はない。その次に://が来る。[:alnum:]はアルファベットと数字を意味する。alはalphabetの略、numはnmberの略である。\はメタ文字を本来の文字意味として使いたい時にメタ文字の前につける。[ ]は[ ]の中にあるいずれか1文字が来るという意味だから、[[:alnum:]\+\$\;\?\.%,!#^*\/:@&=_-]でアルファベット、数字、+、$、;、?、.、%、,、!、#、^、*、/、:、@、&、=、_、-のどれかの1文字という意味になる。後ろに+があるから、アルファベット、数字、+、$、;、?、.、%、,、!、#、^、*、/、:、@、&、=、_、-のどれかが1回以上連続するのである。だから全体として、まず(http、https、ftp、news)のどれかが来て、次に://が来て、次にアルファベット、数字、+、$、;、?、.、%、,、!、#、^、*、/、:、@、&、=、_、- のどれかが1文字以上来るということになる。確かにURLの形をあらわしているのである。
  13. Warning: Cannot modify header information - headers already sent by (output started at /home/zhang/www/MedicineSQL.php:66) in /home/zhang/www/Medicine.php on line 48
    の警告が出る時は、/home/zhang/www/MedicineSQL.php で ?> の後ろにスペースや改行がないかをみる。?> の後ろはスペース、改行をつけない。
  14. 年齢を求める関数
    生年月日が例えば1968年5月3日とし、特定の日例えば2009年8月13日の年齢を求めたい時、1968年5月3日を19680503、2009年8月13日を20090813 と8桁の数字で表現し、引き算をして10000で割り、小数点以下を切り捨てると、年齢が求まる。つまり、
    (20090813-19680503)/10000 を計算して、小数点以下を切り捨てればいいのである。これを応用して年齢を計算する関数をつくる。
    関数名をageにする。ageは$Seinengappi(生年月日)と$Kirokubi(記録日)の2つの引数を持つとする。
    function age($Seinengappi, $Kirokubi){
    /*Linuxでは年月日は例えば2009-08-13のようにハイフォンで区切られて表現されている。まずこれを20090813のようなハイフォンのない表現に変える。date関数で年月日の表現形式を変えるには、タイムスパンが必要であるため、まず$Seinengappiと$Kirokubiのタイムスパンを求める。タイムスパンを返すmktimeの引数に時、分、秒、月、日、年が必要なため、$Seinengappiと$Kirokubiの月、日、年を変数に代入する。*/
     list($Seinengappi_Nen, $Seinengappi_Tsuki, $Seinengappi_Hi) = explode('-', $Seinengappi);
    /* explodeは引数の文字列を指定した文字で区切る関数である。listは右辺の配列の要素を変数に代入する関数である。*/
    list($Kirokubi_Nen, $Kirokubi_Tsuki, $Kirokubi_Hi) = explode('-', $Kirokubi); 
    $Seinengappi=date("Ymd",mktime(0,0,0,$Seinengappi_Tsuki,$Seinengappi_Hi,$Seinengappi_Nen));
    $Kirokubi=date("Ymd",mktime(0,0,0,$Kirokubi_Tsuki,$Kirokubi_Hi,$Kirokubi_Nen));
    $Nenrei=floor(($Kirokubi-$Seinengappi)/10000);
     return $Nenrei;
    }
    /* mktimeの引数は時、分、秒、月、日、年 の順で並べる。dateは第1引数がフォーマットの形で、第2引数がタイムスパンである。タイムスパンを指定されたフォーマットの形で返す。Yは4桁の年、mは2桁の月、dは2桁の日 のファーマットである。ここは19980423 のような形で年月日を表現しようとしているのである。floorは小数点以下を切り捨てる関数である。*/

ホームにもどる      「パソコンについて」にもどる