月の移動は、GETパラメータで?date=2015-01と入力する。
祝日取得について
・googleの公開xmlフィードを使っているため、仕様変更があるとデータをとれなくなる。
・Google calendar API の仕様変更があるとデータをとれなくなる。
・前後1年分までの祝日を表示可能(今が2015年の場合、2013年以前と2017年以降は取れない)
2015年11月18日あたりにXMLフィードが廃止されたため、祝日が取得できなくなってました。
なので、GoogleAPIを使って取得する方法に変更しました。

参考
PHPでカレンダーを作成しよう
Google APIキーの取得方法とカレンダーAPIで祝日を取得する方法
items as $item) {
$date = strtotime((string) $item->start->date);
$title = (string) $item->summary;
$holidays[date('Y-m-d', $date)] = $title;
}
// 祝日の配列を並び替え
ksort($holidays);
}
return $holidays;
}
// 祝日取得
$national_holiday = japan_holiday($y);
?>
";
}
$d = 1;
while (checkdate($m, $d, $y)) {
// 日曜:赤色
if(date("w", mktime(0, 0, 0, $m, $d, $y)) == 0)
{
echo "";
}
// 土曜:青色
elseif(date("w", mktime(0, 0, 0, $m, $d, $y)) == 6)
{
echo "";
}
// 祝日:黄色
elseif(!empty($national_holiday[date("Y-m-d", mktime(0, 0, 0, $m, $d, $y))]))
{
echo "";
}
// 土日祝以外
else
{
echo "";
}
// 週の始まりと終わりでタグを出力
if (date("w", mktime(0, 0, 0, $m, $d, $y)) == 6)
{
// 週を終了
echo "";
// 次の週がある場合は新たな行を準備
if (checkdate($m, $d + 1, $y)) {
echo "";
}
}
$d++;
}
// 最後の週の土曜日まで空のセルを作成
$wdx = date("w", mktime(0, 0, 0, $m + 1, 0, $y));
for ($i = 1; $i < 7 - $wdx; $i++)
{
echo "";
}
?>