sprintf

Posted by muchag | PHP | 2015-02-16 (月) 9:31:41

フォーマットを指定して文字列を生成する関数。

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

PHP | 2015-02-16 (月) 9:31:41 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment