PHPで、文字列や数字を規定の桁数にするために、スペースやゼロなど任意の文字でパディングする方法。
PHPでゼロ埋め(ゼロ パディング)を書いたときにはよくわかっていなかったけど、久しぶりにsprintf()のマニュアルを見たらやっとsprintf() / printf()の使い方がわかった。
でも、単純なゼロ埋めならstr_pad()の方が分かりやすい。(右寄せならsprintf()の方が短いけど。)
str_pad()の場合
$value = 123;変わったところでは左右の両方を埋めるというオプションもある。
$len = 5;
//デフォルトはスペース埋め
echo str_pad($value, $len); // => "123 "
//指定した文字で埋める
echo str_pad($value, $len, '*'); // => "123**"
//右寄せにするなら第4引数で指定
echo str_pad($value, $len, '0', STR_PAD_LEFT); // => "00123"
$value = '(^o^)';
$len = 9;
echo str_pad($value, $len, 'w', STR_PAD_BOTH); // => "ww(^o^)ww"
sprintf()の場合
$value = 123;sprintf()はパディング専用ではなく文字列フォーマット用関数なので、他にもオプションがある。詳しくはsprintf()のマニュアル参照。
$len = 5;
//デフォルトは右寄せのスペース埋め
echo sprintf("%{$len}s", $value); // => " 123"
//左寄せにするならマイナスを付ける
echo sprintf("%-{$len}s", $value); // => "123 "
//ゼロ埋めの場合はゼロを付ける
echo sprintf("%0{$len}s", $value); // => "00123"
//十進数ならsでなくdの方がいい?
echo sprintf("%0{$len}d", $value); // => "00123"
//スペースとゼロ以外で埋めたい場合、埋めたい文字の前にシングルクォートを付ける
echo sprintf("%'*{$len}s", $value); // => "**123"
0 件のコメント:
コメントを投稿