してログ

文字列操作系関数を使っても簡単だが、専用の関数が用意されています。

$pif = pathinfo('/path/to/filename.ext');

処理結果はこのように格納されます。

Array
(
    [dirname] => /path/to
    [basename] => filename.ext
    [extension] => ext
    [filename] => filename
)

置き換え用のタグを連想配列($row)で置き換える例です。どちらとも同じ動きをします。

PHP5.3以降では、クロージャスコープを使ってすっきり書くことができます。

$row  = array( ... );
$html = preg_replace_callback(
	'//',
	function ($match) {
		return $row[$match[1]];
	},
	$html
);

PHP5.3未満では、create_function を使って力技で展開すれば実現できます。

$row  = array( ... );
$seri = serialize($row);
$html = preg_replace_callback(
	'//',
	create_function(
		'$match',
		'$seri = '.var_export($seri,true).';'.
		'$row = unserialize($seri);' .
		'return $row[$match[1]];'
	),
	$html
);

CSS3で追加された :empty 擬似クラスを使うと、最終出力で空になった要素を非表示にできます。

最終出力で結果的に空になって、その要素のマージンだけスペースが無駄になるような場合に有効かと思います。

div.info:empty {
  display: none;
}

鋭意制作中

雑記 20121230

やっぱり、スクリプトのパラメータがゴチャゴチャするのは好まないので、mod_rewrite で綺麗にしようとしているところ。

やっぱり大変、頭の体操。分けわからなくなって、表示エラー連発させてるのはみっともないので、しばらくは水面下でやることにします。

今度、公開するときは立派なブログになっている予定。は未定。

カレンダー作成に向く配列データを返す関数です。 前後の半端な隣の月データも含んでいますので、単純なループを組むことでカレンダーを構成することができます。

今月のカレンダーを二次元配列で受け取る例です。

include('calendar.inc.php');
$days = make_calendar(time(),2);

引数と戻り値の説明

$days = make_calendar($dt,$dim,$monday);
$dt
作成する月内の Unix タイムスタンプを指定します
$dim
二次元配列の結果としたい場合は2を指定します(省略可)
$monday
月曜日開始とする場合は true、通常は日曜日開始になります(省略可)
$days(戻り値)
カレンダー用配列が戻ります

テンプレートシステムの改善とエスケープ処理の見直し、そしてようやくこのブログにページャが付いた、と言ってもまだ2ページ目になるほどの記事が無いっす。

ウェブのシステムというのはパターン化されつくしてて、毎度同じような処理しかしてない、と言うことに改めて気づく一日。だから、一般化したくなるしフレームワークを使いたくもなる。しかし、かっちりした真っ当なフレームワークは、回りくどくて行儀良すぎて使ってて楽しくない。今回作っているフレームワークは、かなりの自由度を持ったまま、最小限のコーディングでシステムをリリースできる、そういうのを目指しています。今のところ、大いに成功してますし、気に入っています。このブログもその成果のひとつ。が、しかーし、記事投稿が PgAdmin やー。