Windows で Linuxシェルコマンドが使える busybox を入れたので、cal コマンドを試していて、3カ月カレンダーにしてみたくなり、作ってみました。
Windowsでは、busybox をインストールする必要あります。
Linux は calコマンドを素直に使ってます。
[ コード例 ]
<?php
/**
* 横並び3カ月カレンダーテキスト取得
* argv : なし
* Update : 2019-01-22
* Author : H.Tanaka
*/
$nowy = (int)date("Y");
$nowm = (int)date("m");
$m0 = $nowm - 1;
$m1 = $nowm;
$m2 = $nowm + 1;
$y0 = $m0 == 0 ? $nowy - 1 : $ynowy;
$y1 = $nowy;
$y2 = $m2 == 13 ? $nowy + 1 : $nowy;
$m0 = $m0 == 0 ? 12 : $m0;
$m2 = $m2 == 13 ? 1 : $m2;
$yary = [$y0, $y1, $y2];
$mary = [$m0, $m1, $m2];
$cmd = "";
if (DIRECTORY_SEPARATOR == "/") { // Linux
$cmd = "cal";
}
else { // Windows
$cmd = "busybox64 cal";
}
$pos = 0;
$restxtary = [];
foreach ($mary as $m) {
$y = $yary[$pos];
$ccmd = $cmd." ".$m." ".$y;
//echo $ccmd."\n";
$resrows = []; // ここで初期化しないと前月に追加される
exec($ccmd, $resrows);
$restxtary[] = $resrows;
$pos++;
}
//var_dump($restxtary);
// 横並び3カ月カレンダー //
$calentxt = "";
for ($i = 0; $i<8; $i++ ) {
for ($j = 0; $j<3; $j++ ) {
$tmp = str_pad($restxtary[$j][$i], 20). " ";
$calentxt .= $tmp;
}
$calentxt .= "\n";
}
echo $calentxt;
?>
[ 実行結果 ]
c:\phppathname>php CalText3MH.php December 2018 January 2019 February 2019 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 1 2 3 4 5 1 2 2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9 9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 30 31
busybox はこちら : https://busybox.net/about.html
[ 応用例 ]
GD を使って画像に書き込んでみる。
コメントを投稿するにはログインしてください。