関数・クラス解説
printf
version:PHP 4, PHP 5, PHP 7 (公式)文字列を指定のフォーマットにしたがって出力する
フォーマット
int : printf ( string $format , mixed ...$values )
パラメータ
string $format
フォーマット形式を指定する。以下を参照してください。
0個以上のディレクティブで構成されるフォーマット文字列: 変換結果に直接コピーされる通常文字列 (% は除きます) と、変換仕様。 これらのいずれも、自分が持つパラメータを取得します。
変換の仕様は、以下のプロトタイプに従います: %[argnum$][flags][width][.precision]specifier.
●Argnum
何個の引数を変換の対象にするかを指定するために、 数値の後にドル記号 $ を続けます。
フラグ一覧(フラグ 説明)
- 与えられたフィールドの幅を左寄せにします。右寄せがデフォルトです。
+ 正の数値の前に付ける + 符号です; デフォルトは、負の数にだけマイナスの符号が数値の前に付きます。
(space) スペースに変換される詰め物です。これがデフォルトです。
0 数値の左側を0埋めします。 s 指定子を使うと、右側にも0埋めできます。
'(char) 指定された (char) で埋めます。
●Width
(最小で)何文字がこの変換結果に含まれるかを数値で指定します。
●Precision ピリオド . の後に数値を続けますが、 その意味は指定子に依存します:
・e, E, f と F 指定子の場合: 小数点の後に表示する桁数 (デフォルトでは、この値は6です)
・g と G 指定子の場合: 表示する最大の有効桁数
・s 指定子の場合: 文字列を切り捨てる時点、つまり、文字列の最大の長さを設定します。
※注意: 明示的に精度を指定せず、ピリオドを指定した場合、精度は0として扱われます。
※注意: 位置を示す指定子に、PHP_INT_MAX を超える値を指定すると、警告が発生します。
指定子の一覧(指定子 説明)
% 文字通り、パーセント文字です。 引数は不要です。
b 引数は数値として扱われ、バイナリ値として表現されます。
c 引数は数値として扱われ、ASCII文字として表現されます。
d 引数は数値として扱われ、(符号付き)小数値として表現されます。
e 引数は科学的記法で表現された値(e.g. 1.2e+2)として扱われます。 PHP 5.2.1 以降では、precision 指定子が小数点以降の桁数を表します。 それより前のバージョンでは、(ひと桁少ない) 有効桁数として解釈されていました。
E e 指定子に似ていますが、 大文字を使います(e.g. 1.2E+2)
f 引数は小数として扱われ、浮動小数値として表現されます(ロケールを考慮します)。
F 引数は小数として扱われ、浮動小数値として表現されます(ロケールを考慮しません)。 PHP 5.0.3 以降で利用可能です
g 汎用フォーマット
P を精度を表す、ゼロでない値とします。 精度が省略された場合、Pの値は6です。 精度に0を指定した場合、Pの値は1になります。 この場合、 E 指定子の変換結果は、 X乗になります。
P > X ≥ −4 の場合、E 指定子の変換結果となり、精度は、P − (X + 1) になります。 そうでない場合、e 指定子の変換結果となり、 精度は、P - 1 になります。
G g 指定子に似ていますが、 E と f を使います。
o 引数は数値として扱われ、8進数値として表現されます。
s 引数は文字列として扱われ、文字列として表現されます。
u 引数は数値として扱われ、符号なし小数値として表現されます。
x 引数は数値として扱われ、16進数値(小文字)として表現されます。
X 引数は数値として扱われ、16進数値(大文字)として表現されます。
※警告 c 指定子はパディングと幅を無視します
※警告 文字列と width 指定子を、1文字の表現に1バイト以上必要な文字セットと一緒に使おうとすると、 期待しない結果になるかもしれません。
値は、指定子の型に合うように強制されます:
型のハンドリング(型 指定子)
string s
integer d, u, c, o, x, X, b
double g, G, e, E, f, F
mixed ...$values
フォーマットしたい文字列を指定します
返値 int
出力した文字列の長さ(バイト数)
解説
format によって作成された文字列を出力します。同様の関数がいくつか存在します。参考リンクを参照するか、printf で検索してみてください。
記述サンプル
//公式より引用
$n = 43951789;
$u = -43951789;
$c = 65; // ASCII の 65番目は 'A'
// %% は、リテラル '%' 文字を出力することに注意
printf("%%b = '%b'\n", $n); // バイナリ表現
printf("%%c = '%c'\n", $c); // ASCII 文字を出力。chr() 関数と同じ
printf("%%d = '%d'\n", $n); // 標準的な整数表現
printf("%%e = '%e'\n", $n); // 科学的記法
printf("%%u = '%u'\n", $n); // 正の整数の符号なし整数表現
printf("%%u = '%u'\n", $u); // 負の整数の符号なし整数表現
printf("%%f = '%f'\n", $n); // 浮動小数点表現
printf("%%o = '%o'\n", $n); // 8進数表現
printf("%%s = '%s'\n", $n); // 文字列表現
printf("%%x = '%x'\n", $n); // 16進数の表現(小文字)
printf("%%X = '%X'\n", $n); // 16進数の表現(大文字)
printf("%%+d = '%+d'\n", $n); // 正の整数値の符号
printf("%%+d = '%+d'\n", $u); // 負の整数値の符号
//結果
%b = '10100111101010011010101101'
%c = 'A'
%d = '43951789'
%e = '4.39518e+7'
%u = '43951789'
%u = '4251015507'
%f = '43951789.000000'
%o = '247523255'
%s = '43951789'
%x = '29ea6ad'
%X = '29EA6AD'
%+d = '+43951789'
%+d = '-43951789'
//文字列の指定子
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // 通常の文字列出力
printf("[%10s]\n", $s); // スペースで右寄せにする
printf("[%-10s]\n", $s); // スペースで左寄せにする
printf("[%010s]\n", $s); // ゼロ埋めは文字列でも機能します
printf("[%'#10s]\n", $s); // '#' 文字を使ったカスタムの文字埋め
printf("[%10.9s]\n", $t); // 右寄せ。但し8文字で切り捨て
printf("[%-10.9s]\n", $t); // 左寄せ。但し8文字で切り捨て
//結果表示
[monkey]
[ monkey]
[monkey ]
[0000monkey]
[####monkey]
[ many monk]
[many monk ]
参考リンク
・flush システム出力バッファをフラッシュする・date ローカルの日付/時刻を書式化する
・fscanf フォーマットに基づきファイルからの入力を処理する
・fprintf 指定されたフォーマットの文字列をファイルに書き込む
・number_format 数字を千区切り・小数点の桁などでフォーマットする
・sscanf 文字列を指定したフォーマットに基づいて整形し返却する
・vfprintf フォーマットされた文字列をストリームに書き込む
・vprintf フォーマットされた文字列を出力する
・vsprintf フォーマットされた文字列を返す
タグ
数値 フォーマット 出力 print String 文字列
公式リファレンス
書式
printf ( string $format , mixed ...$values ) : int
説明
format にしたがって、出力を生成します。
パラメータ
- format
- 0個以上のディレクティブで構成されるフォーマット文字列: 変換結果に直接コピーされる通常文字列 (% は除きます) と、変換仕様。 これらのいずれも、自分が持つパラメータを取得します。 変換の仕様は、以下のプロトタイプに従います: %[argnum$][flags][width][.precision]specifier.
Argnum
何個の引数を変換の対象にするかを指定するために、 数値の後にドル記号 $ を続けます。フラグ一覧 フラグ 説明 - 与えられたフィールドの幅を左寄せにします。 右寄せがデフォルトです。 + 正の数値の前に付ける + 符号です; デフォルトは、負の数にだけマイナスの符号が数値の前に付きます。 (space) スペースに変換される詰め物です。 これがデフォルトです。 0 数値の左側を0埋めします。 s 指定子を使うと、 右側にも0埋めできます。 '(char) 指定された (char) で埋めます。 Width
(最小で)何文字がこの変換結果に含まれるかを数値で指定します。Precision
ピリオド . の後に数値を続けますが、 その意味は指定子に依存します:- e, E, f と F 指定子の場合: 小数点の後に表示する桁数 (デフォルトでは、この値は6です)
- g と G 指定子の場合: 表示する最大の有効桁数
- s 指定子の場合: 文字列を切り捨てる時点、つまり、文字列の最大の長さを設定します。
注意: 明示的に精度を指定せず、ピリオドを指定した場合、精度は0として扱われます。
注意: 位置を示す指定子に、PHP_INT_MAX を超える値を指定すると、警告が発生します。
指定子の一覧 指定子 説明 % 文字通り、パーセント文字です。 引数は不要です。 b 引数は数値として扱われ、バイナリ値として表現されます。 c 引数は数値として扱われ、ASCII文字として表現されます。 d 引数は数値として扱われ、(符号付き)小数値として表現されます。 e 引数は科学的記法で表現された値(e.g. 1.2e+2)として扱われます。 PHP 5.2.1 以降では、precision 指定子が小数点以降の桁数を表します。 それより前のバージョンでは、(ひと桁少ない) 有効桁数として解釈されていました。 E e 指定子に似ていますが、 大文字を使います(e.g. 1.2E+2) f 引数は小数として扱われ、浮動小数値として表現されます(ロケールを考慮します)。 F 引数は小数として扱われ、浮動小数値として表現されます(ロケールを考慮しません)。 PHP 5.0.3 以降で利用可能です g 汎用フォーマット P を精度を表す、ゼロでない値とします。 精度が省略された場合、Pの値は6です。 精度に0を指定した場合、Pの値は1になります。 この場合、 E 指定子の変換結果は、 X乗になります。 P > X ≥ −4 の場合、E 指定子の変換結果となり、精度は、P − (X + 1) になります。 そうでない場合、e 指定子の変換結果となり、 精度は、P - 1 になります。 G g 指定子に似ていますが、 E と f を使います。 o 引数は数値として扱われ、8進数値として表現されます。 s 引数は文字列として扱われ、文字列として表現されます。 u 引数は数値として扱われ、符号なし小数値として表現されます。 x 引数は数値として扱われ、16進数値(小文字)として表現されます。 X 引数は数値として扱われ、16進数値(大文字)として表現されます。 警告 c 指定子はパディングと幅を無視します警告 文字列と width 指定子を、1文字の表現に1バイト以上必要な文字セットと一緒に使おうとすると、 期待しない結果になるかもしれません。値は、指定子の型に合うように強制されます:型のハンドリング 型 指定子 string s integer d, u, c, o, x, X, b double g, G, e, E, f, F - values
返値
出力した文字列の長さを返します。
注意
警告 c 指定子はパディングと幅を無視します
サンプル
例1 printf(): various examples
$n = 43951789;
$u = -43951789;
$c = 65; // ASCII の 65番目は 'A'
// %% は、リテラル '%' 文字を出力することに注意
printf("%%b = '%b'\n", $n); // バイナリ表現
printf("%%c = '%c'\n", $c); // ASCII 文字を出力。chr() 関数と同じ
printf("%%d = '%d'\n", $n); // 標準的な整数表現
printf("%%e = '%e'\n", $n); // 科学的記法
printf("%%u = '%u'\n", $n); // 正の整数の符号なし整数表現
printf("%%u = '%u'\n", $u); // 負の整数の符号なし整数表現
printf("%%f = '%f'\n", $n); // 浮動小数点表現
printf("%%o = '%o'\n", $n); // 8進数表現
printf("%%s = '%s'\n", $n); // 文字列表現
printf("%%x = '%x'\n", $n); // 16進数の表現(小文字)
printf("%%X = '%X'\n", $n); // 16進数の表現(大文字)
printf("%%+d = '%+d'\n", $n); // 正の整数値の符号
printf("%%+d = '%+d'\n", $u); // 負の整数値の符号
上の例の出力は以下となります。
%b = '10100111101010011010101101'
%c = 'A'
%d = '43951789'
%e = '4.39518e+7'
%u = '43951789'
%u = '4251015507'
%f = '43951789.000000'
%o = '247523255'
%s = '43951789'
%x = '29ea6ad'
%X = '29EA6AD'
%+d = '+43951789'
%+d = '-43951789'
例2 printf(): 文字列の指定子
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // 通常の文字列出力
printf("[%10s]\n", $s); // スペースで右寄せにする
printf("[%-10s]\n", $s); // スペースで左寄せにする
printf("[%010s]\n", $s); // ゼロ埋めは文字列でも機能します
printf("[%'#10s]\n", $s); // '#' 文字を使ったカスタムの文字埋め
printf("[%10.9s]\n", $t); // 右寄せ。但し8文字で切り捨て
printf("[%-10.9s]\n", $t); // 左寄せ。但し8文字で切り捨て
上の例の出力は以下となります。
[monkey]
[ monkey]
[monkey ]
[0000monkey]
[####monkey]
[ many monk]
[many monk ]
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール