フォーマットを指定して文字列を生成する関数。
PHP マニュアル:sprintf
【環境】
php:5.4.7
書式
string sprintf ( string $format [, mixed $args [, mixed $… ]] )
フォーマット文字列 format に基づき生成された文字列を返します。
第1引数:フォーマット文字列
第2引数以降:配置引数(文字列、数値)。省略可
返り値フォーマット済み文字列
フォーマット文字列
一般文字列の中に各指定子を組み込む形式。
正規表現と同じような指定子の使い方。
$str = sprintf( 'リンゴ%d個', 5 );
echo $str;
// 出力結果
リンゴ5個
%d の部分が指定子。
そして、後続引数(5 の部分)にて値を指定。
これで指定子の部分を引数に置換して返してくれる。
指定子
詳細はマニュアルで。
置換指定子
%d:整数
%+d:整数(符号あり)
%-d:整数(符号あり)
%s:文字列
位置指定子
n$:n = 引数の順序。% 直後に配置
%1$d:1番目の引数の整数を指定
%2$s:2番目の引数の文字列を指定
$str = sprintf( '%2$sからもらったリンゴは%1$d個', $num, $name );
echo $str;
// 出力結果
太郎からもらったリンゴは5個
引数の順番が入れ替わっても大丈夫!
パディング
桁(文字数)揃え。
0 パディングだけでなく、何でも指定できる。
*n:* = 埋める文字(数字)、n = 桁数
%04d:4桁の0 パディング
0 以外の文字を利用する場合は、
‘# のようにシングルクォーテーションを付けるみたい。
未検証。
私が具体的に利用したのは
$year = 2015;
$month = 2;
$str = sprintf( '%04d-%02d', $year, $month );
echo $str;
// 出力結果
2015-02
インデント?
「インデント」で合ってたからしらね。。。
今日(2018-11-28)、あれこれ見ている中で
知らない指定方法を見つけた。
アシアルブログ:PHPでリフレクション(2010-09-21)
require __DIR__.'/Entity/User.php';
$reflClass = new ReflectionClass('Entity\User');
echo sprintf("%-20s: %s\n", 'getName', $reflClass->getName());
echo sprintf("%-20s: %s\n", 'getNamespaceName', $reflClass->getNamespaceName());
echo sprintf("%-20s: %s\n", 'getShortName', $reflClass->getShortName());
echo sprintf("%-20s: %s\n", 'getFileName', $reflClass->getFileName());
// 出力結果
getName : Entity\User
getNamespaceName : Entity
getShortName : User
getFileName : /home/fivestar/asial-blog/Entity/User.php
おー こういうのもあるのね。
参考サイト
PHP マニュアル:str_pad