※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
  後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
  また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。

■ フォーマット(書式整形)関数(sprintf)

「フォーマット(書式整形)関数(sprintf)」とは、変数の内容を指定した書式に変換してくれる関数です。
主に数字の整形に使われることが多いと思います。

整形には、「書式指定文字列」というものを使います。
「書式指定文字列」の書式は「%fm.nx」というパターンで記述され、その指定には様々な種類がありますが、一般的によく使用するものに絞って説明いたします。

フラグ(f)
記述例 意  味
- 左詰(ディフォルトは右詰)
+ 正の数値に「+」符号を付ける
空白 正の数値に「空白」を付ける
0 数値の前を「0」埋めする
m(最小幅) 指定した桁数にそろえる
n(最大幅、精度) 文字列の最大桁数、小数点以下の桁数、指数表現の有効桁数

型指定子フラグ(x)】
記述例 意  味
%% パーセント文字
c 文字
s 文字列
d 10進整数
o 8進整数
u 符号なし10進整数
x 16進整数
X 16進整数(英字に大文字を使用する)
e 浮動小数点(指数形式)
f 浮動小数点(固定小数点形式)

上記の解説では全然意味が解からないと思いますので、サンプルを記述しておきます。
このサンプルはこのサイトの「CGIサンプル」とほぼ同じです。
※表示文字列の最後にある「<br>\n」はそれぞれのHTMLの改行とテキストファイルの改行です。

【記述サンプル】
<?php print <<< DOC_END <HTML> <HEAD> <title>フォーマット(書式整形)関数のテスト</title> </HEAD> <BODY>DOC_END; $a = "abcdefg"; print "◆\"$a\"<br>\n"; print "%c = ".sprintf("%c<br>\n", $a); print "%s = ".sprintf("%s<br>\n", $a); print "%10s = ".sprintf("%10s<br>\n", $a); print "%-10s = ".sprintf("%-10s<br><br>\n", $a); $a = 12345.6789; print "◆$a<br>\n"; print "%c = ".sprintf("%c<br>\n", $a); print "%s = ".sprintf("%s<br>\n", $a); print "%d = ".sprintf("%d<br>\n", $a); print "%f = ".sprintf("%f<br>\n", $a); print "%o = ".sprintf("%o<br>\n", $a); print "%x = ".sprintf("%x<br>\n", $a); print "%X = ".sprintf("%X<br>\n", $a); print "%e = ".sprintf("%e<br><br>\n", $a); print "%2d = ".sprintf("%2d<br>\n", $a); print "%02d = ".sprintf("%02d<br>\n", $a); print "%2.2f = ".sprintf("%2.2f<br>\n", $a); print "%02f = ".sprintf("%08f<br>\n", $a); print "%02.f = ".sprintf("%08.f<br>\n", $a); print "%02.2f = ".sprintf("%08.2f<br>\n", $a); print "%2.3f% = ".sprintf("%8.3f%%<br><br>\n", $a); print "%8d = ".sprintf("%8d<br>\n", $a); print "%08d = ".sprintf("%08d<br>\n", $a); print "%8.8f = ".sprintf("%8.8f<br>\n", $a); print "%08f = ".sprintf("%08f<br>\n", $a); print "%08.f = ".sprintf("%08.f<br>\n", $a); print "%08.2f = ".sprintf("%08.2f<br>\n", $a); print "%8.3f% = ".sprintf("%8.3f%%<br><br>\n", $a); $a = -12345.6789; print "◆$a<br>\n"; print "%s = ".sprintf("%s<br>\n", $a); print "%d = ".sprintf("%d<br>\n", $a); print "%f = ".sprintf("%f<br>\n", $a); print "%o = ".sprintf("%o<br>\n", $a); print "%x = ".sprintf("%x<br>\n", $a); print "%X = ".sprintf("%X<br>\n", $a); print "%e = ".sprintf("%e<br><br>\n", $a); print "%2d = ".sprintf("%2d<br>\n", $a); print "%02d = ".sprintf("%02d<br>\n", $a); print "%2.2f = ".sprintf("%2.2f<br>\n", $a); print "%02f = ".sprintf("%08f<br>\n", $a); print "%02.f = ".sprintf("%08.f<br>\n", $a); print "%02.2f = ".sprintf("%08.2f<br>\n", $a); print "%2.3f% = ".sprintf("%8.3f%%<br><br>\n", $a); print "%8d = ".sprintf("%8d<br>\n", $a); print "%08d = ".sprintf("%08d<br>\n", $a); print "%8.8f = ".sprintf("%8.8f<br>\n", $a); print "%08f = ".sprintf("%08f<br>\n", $a); print "%08.f = ".sprintf("%08.f<br>\n", $a); print "%08.2f = ".sprintf("%08.2f<br>\n", $a); print "%8.3f% = ".sprintf("%8.3f%%<br><br>\n", $a); print <<< DOC_END </BODY> </HTML> DOC_END;
◆実行結果について

上記のサンプルを「sprintf.php」という名前で保存して実行してみてください。

実行結果はこちらをクリックしてください。
なお、実行結果については、各々のサーバーの環境、ユーザーの環境にによって内容は変わってきます。
それと表示はHTML形式となっていますので、連続した半角空白は表面上表示できません。
一部、ソースで確認する必要があります。


page update:2010/01/23 20:32

Copyright (c) 2000-2009, all Rights Reserved & Produced by atom