imgタグ変換
ここで、ちょっとしたユーティリティを1つ紹介します。値を img タグに変換する関数です。
たとえばアクセスカウンターなんかは、値をそのままテキストで表示するよりも数字の絵を並べて表示したほうが、自分の好きなデザインで表示されるのでちょっぴりうれしいはずです。これはそんな時に使います。
この関数は、123 とかの値を <img src="1.gif"><img src="2.gif"><img src="3.gif"> のように img タグに変換するための関数です。SCDB で得られたカウンターの値とかは、そのままだと単なるテキストでしか表示できません。見た目の部分は、せいぜいフォントの種類とか色とかを変えたりできるくらいです。でもこの関数を使って img タグに変換すれば、あとは絵を用意するだけで自分の好きなデザインで数字を表示することができます。
この関数の名前は da_make_img_tag() です。名前が気に入らない場合は、自分の好きな名前に変えて使ってもいいでしょう。で、スクリプトは以下の通り。
//----------------------------------------------------------------------
// img タグを生成する
//
// string da_make_img_tag( int $num, int $ncol, string $srcfmt,
// string [$altfmt], int [$h], int [$w] )
//
// 引き数 $num 値
// $ncol 桁数
// $srcfmt ファイル名生成用書式文字列
// $altfmt 代替文字列生成用書式文字列
// $h 画像の高さ
// $w 画像の幅
//
// 戻り値 img タグの文字列
//----------------------------------------------------------------------
- function da_make_img_tag( $num, $ncol, $srcfmt, $altfmt=NULL, $h=0, $w=0 )
- {
- $tag = "";
- $numstr = sprintf( "%0${ncol}d", $num );
-
- for( $n=0; $n<strlen($numstr); $n++ )
- {
- $s = sprintf( $srcfmt, $numstr{$n} );
- $tag .= "<img src=\"$s\"";
-
- if( $w > 0 )
- $tag .= " width=\"$w\"";
-
- if( $h > 0 )
- $tag .= " height=\"$h\"";
-
- if( !is_null( $altfmt ) )
- {
- $a = sprintf( $altfmt, $numstr{$n} );
- $tag .= " alt=\"$a\"";
- }
-
- $tag .= ">";
- }
-
- return $tag;
- }
では、引き数について説明します。
$num は、すばり値です。456 とか 7890 とかの値を指定します。
$ncol は、何桁で表示するかの桁数を指定します。たとえば、値が 5432 で桁数を6とすると、'005432' になります。ですが、同じ値で桁数を1としても '2' とはなりません。桁数が足りない場合は、必要な桁数で表示されます。つまり 5432 を桁数1とした場合は、'5432' になります。逆に言えば、桁数を1にしておけば常に必要最小限な桁数で表示されることになります。
$srcfmt は、各桁の値を src="" で指定する画像のファイル名に変換するための書式文字列を指定します。書式文字列に指定できる書式は、PHPマニュアルの ここ を見てください。たとえばこれに "img/num_%d.gif" と指定した場合、生成されるファイル名は "img/num_X.gif" となります。(X は 0〜9)
$altfmt は、alt="" で指定したい文字列の書式文字列を指定します。省略、または NULL を指定した場合、alt="" は img タグに挿入されません。
$h は、height="" で指定したい画像の高さを指定します。省略、または 0以下を指定した場合は、height="" は img タグに挿入されません。
$w は、width="" で指定したい画像の幅を指定します。省略、または 0以下を指定した場合は、width="" は img タグに挿入されません。
スクリプトの内容は、4 行目で必要な桁数の文字列を生成して、6〜24 行目で一桁ずつ分解して img タグを生成しています。
スクリプトは上に書いてあるのが全てなので、コピー&ペーストでエディタ等に貼り付けて使ってください。
|