フリーPHPスクリプト配布サイト。
ここからは文法の解説になりますので、じっくりと読み進めていって下さい。まずは開発環境のテストに掲載した sample.php
のプログラムを例に、解説を進めていきます。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p>今日の日付は<?php echo date("Y/m/d"); ?>です。</p>
</body>
</html>
PHPは、HTML文章にプログラムを埋め込む形式で書くことができます。具体的には、<?php
と ?>
で囲まれた部分がPHPのプログラムとして解釈・実行され、その結果がブラウザに表示されます。それ以外の部分は通常のHTML としてブラウザに表示されます。
<?php
~ ?>
は、一つのファイルにいくつでも書くことができます。また、<?php
~ ?>
の代わりに
<script language="php">
~ </script>
<?
~ ?>
<%
~ %>
と書く方法も用意されています。ただし <?
~ ?>
と <%
~ %>
を使うにはPHPの設定を変更する必要があります。<script language="php">
~ </script>
の書き方もほとんど見られないので、特に理由がなければ <?php
~ ?>
を使うことをお勧めします。
echo
はブラウザに文字を表示するための命令です。文字列を直接表示させたい場合、echo
に続いて '
(シングルクォート)もしくは "
(ダブルクォート)で囲んだ文字列を書くと、その内容がブラウザに表示されます。'
で囲って表示した文字列内では、エスケープ文字や変数が展開されずにそのまま表示されます。エスケープ文字や変数については、後ほど紹介します。
また、各命令は ;
(セミコロン)で区切る決まりになっています。例えば
<?php
echo "こんにちは。";
echo "PHPの世界へようこそ!";
?>
このように書くと、ブラウザには こんにちは。PHPの世界へようこそ!
と表示されます。セミコロンを忘れて
<?php
echo "こんにちは。"
echo "PHPの世界へようこそ!";
?>
このように次の命令を書くとエラーになるので注意してください。
ただし、セミコロンは「命令の区切り」なので、命令が一つの場合や最後の場合はセミコロンが無くても動作します。つまり、
<p>今日の日付は<?php echo date("Y/m/d") ?>です。</p>
このプログラムは動作しますし、
<?php
echo "こんにちは。";
echo "PHPの世界へようこそ!"
?>
このプログラムも動作します。ですがセミコロンの付け忘れでエラーになってしまうことが多いため、初めのうちはセミコロンを省略せずに書いた方がいいでしょう。
date
とは、日時を取得できる関数です。関数とはあらかじめPHPに用意されている命令で、その関数名を書くと処理の結果が返ってきます。(PHPには他にもたくさんの関数が用意されています。)
今回の場合は date("Y/m/d")
となっていますが、括弧内の文字は以下のようなアルファベットを指定できます。
文字 | 意味 | 例 |
---|---|---|
Y |
年が4桁の数字で表示されます | 2010 |
m |
月が2桁の数字で表示されます | 09 |
d |
日が2桁の数字で表示されます | 01 |
H |
24時間単位の時間が2桁の数字で表示されます | 15 |
i |
分が2桁の数字で表示されます | 06 |
s |
秒が2桁の数字で表示されます | 47 |
つまり、date("Y/m/d")
と書くと「2010/09/01」のような文字列が返され、date("H:i")
と書くと「15:06」のような文字列が返されます。
PHPは非常にたくさんの関数が用意されているため、すべての関数と意味を覚えるのは不可能です。なので、その都度調べながらプログラムを作成することになります。関数の意味は以下のサイトで調べることができます。
ページ右上にある「search for」の部分に関数名を入力して検索することができます。もちろん、市販の書籍などで調べることもできます。
プログラム中で文字の改行を行いたい場合は、HTMLの文法に従って <br />
タグを出力すればOKです。具体的には、以下のようになります。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p><?php
echo "こんにちは。<br />";
echo "PHPの世界へようこそ!";
?></p>
</body>
</html>
これで こんにちは。
の直後で改行され、次の行に PHPの世界へようこそ!
が表示されるようになります。これは通常のHTML文章とまったく同じです。
それでは、表示されたページのHTMLソースを表示させてみてください。HTMLを確認すると、こんにちは。PHPの世界へようこそ!
の部分が改行されていないと思います。HTML文章を手書きで作成する場合、HTML文章を見やすくするために適度に改行を挿入しますが、上のプログラムだとそれがされていません。改行をしたければ、別途改行文字を書く必要があります。
PHPでは改行文字は \n
と表現します。ですから echo
で表示される文章中に \n
と書くと、その部分でHTMLソースが改行されます。
それでは、HTMLソースが改行されるように、sample.php
の内容を書き換えてみます。一例を挙げると以下のようになります。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p><?php
echo "こんにちは。<br />\n";
echo "PHPの世界へようこそ!";
?></p>
</body>
</html>
HTML表示部分の最後に、\n
を追加しています。これを実行して、そのHTMLソースを表示させてみてください。以下のように、改行されたHTMLが表示されます。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p>こんにちは。<br />
PHPの世界へようこそ!</p>
</body>
</html>
これくらいのプログラムなら改行があっても無くても大差は無いですが、適切に改行を行っておくと、複雑なHTMLを出力した際に正しいHTMLを出力できているかチェックしやすくなります。
また、PHPからファイルに文字を書き込む場合にも、改行させる場合は \n
を使用します。ファイルの読み書きは後ほど紹介しますので、今は頭の片隅に置いておいてください。
プログラム中での改行や空行は、基本的には無視されます。つまり
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p><?php
echo "こんにちは。<br />\n";
echo "PHPの世界へようこそ!";
?></p>
</body>
</html>
このように適当に行を空けても、実行結果にはまったく影響はありません。自分で判りやすいと思うように、表示内容のまとまりごとに空行を入れておくといいでしょう。ただし
ec
ho "こんにちは。<br />\n";
このように命令の途中で改行すると、文法エラーになるので注意してください。
また、半角スペースとタブも同様に無視されます。HTMLコーディングの時と同様に、読みやすいようにインデントすることができます。
プログラムの行頭に //
(スラッシュ2つ)を付けると、その行は無視されます。例えば
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p><?php
//echo "こんにちは。<br />\n";
echo "PHPの世界へようこそ!";
?></p>
</body>
</html>
このプログラムの場合、//echo " こんにちは。<br />\n";
の行は無視して実行されます。ですから、ブラウザには PHPの世界へようこそ!
のみが表示されます。このように、行頭に //
がある行は実行されなくなるので、プログラムを一時的に実行させたくない場合や、プログラムの説明を記載するときに使用されます。
また、/*
と */
で囲まれた部分もコメントとして扱われます。 //
とは異なり、複数行のコメントを書く事ができます。具体的には以下のように使用します。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p><?php
//ここからPHP のプログラム
echo "こんにちは。<br />\n";
echo "PHP の世界へようこそ!";
/*
echo "ここは実行されません。";
echo "一時的に処理を無効にしたりプログラムにメモを残す事ができます。";
*/
?></p>
</body>
</html>
HTMLでは <!--
と -->
で囲まれた部分がコメントとして扱われ、一時的に非表示にしたい場合やHTMLの説明を記載するときに使用されます。用途はそれと同じです。
現在、echo
命令で表示する内容は "
で囲われています。それでは "
を含むHTML文章を表示しようとするとどうなるでしょうか。例えば以下のようなプログラムです。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p><?php
echo "<a href="http://www.google.co.jp/">Google</a>にリンクします。\n";
?></p>
</body>
</html>
このプログラムを実行しても、正しく表示されません。echo " ~ ";
の場合、"
と "
にはさまれた文字列を表示せよ。という意味になるので「echo "<a href="
は理解できるけど、後に続く文字は何だ?」と解釈されてしまいます。
この場合、以下のように修正すると正しく表示されます。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p><?php
echo "<a href=\"http://www.google.co.jp/\">Google</a>にリンクします。\n";
?></p>
</body>
</html>
"
の前にそれぞれ \
をつけています。 \
はエスケープ文字と呼ばれるもので、これを書くと、その直後の特別な文字を通常の文字として扱うことができます。
上の例では "
は echo
で表示する範囲を示すための特別な文字でしたが、\"
と書くことにより、通常の "
として扱うことができます。
またこれとは逆に、通常の文字の直前に書くと直後の文字を特別な意味を持つ文字として扱うことができます。特別な文字とは、例えば n
です。普通に n
と書けば画面に n
が表示されますが、\n
と書くことにより、改行文字として扱うことができます。
PHPプログラムでよく使用される特殊文字は以下の通りです。
特殊文字 | 意味 |
---|---|
\n |
改行文字になります |
\t |
タブになります |
\\ |
\ を表示します。 |
なお、エスケープ文字が有効になるのは、文字列を "
で囲った場合のみです。'
で囲うと、エスケープ文字がそのまま表示されます。つまり、
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p><?php
echo 'この\nは改行になりません。';
?></p>
</body>
</html>
このように書くと、画面には この\nは改行になりません。
と表示されます。