<?php header("Content-type: text/html; charset=utf-8"); //****************************** //サブルーチン //****************************** //1か月分のカレンダーのHTMLを生成する関数 function createcalendar($year, $month){ //その月の1日のタイムスタンプを取得 //ここで何年何月分のカレンダーを作るか設定 $startday = mktime(0, 0, 0, $month, 1, $year); //その月の1日の曜日を取得 $startweek = date("w", $startday); //その月の月末日を取得 $daycnt = date("t", $startday); //曜日名の行を組み立て $body = "<table border=\"1\">"; $body .= "<tr>"; $body .= "<td>日</td>"; $body .= "<td>月</td>"; $body .= "<td>火</td>"; $body .= "<td>水</td>"; $body .= "<td>木</td>"; $body .= "<td>金</td>"; $body .= "<td>土</td>"; $body .= "</tr>"; //1日より前の空欄となる曜日のセルを組み立て $weekcnt = 0; while($weekcnt != $startweek){ $body .= "<td><br></td>"; //曜日を埋める $weekcnt++; } //1日から月末日までの日付を出力 for($daynum = 1; $daynum <= $daycnt; $daynum++){ $body .= "<td>"; if((date("Y/m", $startday) . "/" .$daynum) == date("Y/m/j")){ //今日なら赤表示 $body .= "<b style=\"color:#ff0000;\">" . $daynum . "</b>"; } else{ $body .= $daynum; } $body .= "</td>"; //曜日が土曜なら折り返して次の行へ if($weekcnt++ == 6){ $body .= "</tr>"; if($daynum < $daycnt){ $body .= "<tr>"; } //曜日を日曜に戻す $weekcnt = 0; } } //月末日より後ろの空欄となる曜日のセルを組み立て while($weekcnt > 0 and $weekcnt <= 6){ $body .= "<td><br></td>"; $weekcnt++; } $body .= "</table>"; //関数の返り値を指定 return $body; } //****************************** //メインルーチン //****************************** $body = ""; //2006年の9月~11月のカレンダのHTMLを生成するループ for($mm = 9; $mm <= 11; $mm++){ $body .= createcalendar(2006, $mm) . "<br>"; } //生成されたHTMLを出りょっく echo $body; ?>