PHPのvfprintf()関数の使い方を徹底解説!書式付き文字列をストリームへ出力する方法
vfprintf()関数とは
PHPのvfprintf()関数は、書式を指定した文字列(フォーマット済み文字列)を、ファイルやソケットなど特定の出力先(ストリーム)に書き込むための関数です。処理が成功すると、出力された文字列の長さを戻り値として返します。
なお、似た関数として個別の引数を受け取るfprintf()がありますが、vfprintf()は引数を配列としてまとめて渡せる点が特徴です。配列に格納された複数の値を一度に扱いたい場合に便利です。
基本構文
vfprintf(stream, format, arg)
パラメータの詳細
- stream − 文字列を出力する先(ファイルポインタなど)を指定します。
- format − 出力する文字列と、その中で変数をどのように整形するかを指定します。
- arg − 書式文字列内の「%」記号に対応して挿入される値を含む配列を指定します。
formatで使える主な書式指定子
| 指定子 | 意味 |
|---|---|
| %% | パーセント記号(%)そのものを返す |
| %b | 2進数として出力 |
| %c | ASCIIコードに対応する文字を出力 |
| %d | 符号付き10進数(負・0・正) |
| %e | 小文字を使った指数表記(例:1.2e+2) |
| %E | 大文字を使った指数表記(例:1.2E+2) |
| %u | 符号なし10進数(0以上) |
| %f | 浮動小数点数(ロケール設定に依存) |
| %F | 浮動小数点数(ロケール設定に依存しない) |
| %g | %eと%fのうち短い方を採用 |
| %G | %Eと%fのうち短い方を採用 |
| %o | 8進数として出力 |
| %s | 文字列として出力 |
| %x | 16進数として出力(英字は小文字) |
| %X | 16進数として出力(英字は大文字) |
戻り値
vfprintf()関数は、正常に処理が行われた場合、出力された文字列の長さ(バイト数)を整数で返します。
使用例
以下は、書式「%f%f」を使って2つの数値をファイルに書き込むサンプルコードです。
<?php
$str1 = 123;
$str2 = 456;
$file = fopen("sample.txt", "r");
vfprintf($file, "%f%f", array($str1, $str2));
?>この例では、配列に格納した$str1と$str2の値が、%f(浮動小数点数)の形式に変換され、開いたファイルsample.txtに対して順番に書き込まれます。
実行結果(sample.txtの内容)
123.000000456.000000
まとめ
vfprintf()関数は、printf系の書式指定機能を活かしながら、結果を画面ではなく任意のストリーム(ファイルなど)へ直接出力したい場合に活躍します。引数を配列で渡せるため、可変長のデータをまとめてフォーマットする際にも柔軟に対応できるのが魅力です。ログファイルへの整形済みデータの書き込みなど、実用的な場面でぜひ活用してみてください。
-
PHPのsubstr()関数の使い方を徹底解説!文字列の一部を抽出する方法
PHPのsubstr()関数は、文字列の一部を抽出して返すための関数です。指定した開始位置から、指定した長さ分だけ文字列を取り出すことができます。構文substr(str, begin, len)パラメータstr − 対象となる元の文字列を指定します。begin − 文字列のどこから抽出を開始するかを指定します。正の数 − 文字列の先頭から数えて指定位置から抽出を開始します。負の数 − 文字列の末尾から数えて指定位置から抽出を開始します。0 − 文字列の最初の文字から抽出を開始します。len − 抽出する文字列の長さを指定します。省略した場合は、開始位置から文字列の末尾までが返されます。正の数
-
PHPのfprintf()関数とは?ストリームへのフォーマット済み文字列の書き込み方法を解説
PHPのfprintf()関数は、指定したストリーム(ファイルなど)にフォーマット済みの文字列を書き込むための関数です。printf()と同じ書式指定が使えますが、出力先をブラウザではなくファイルやストリームにできる点が大きな特徴です。ログの記録やデータファイルの生成などに活用できます。 構文 fprintf(stream, format, argument1, argument2, ...) パラメータ stream − 文字列の書き込み・出力先となるストリーム(通常はfopen()で取得したファイルポインタを指定します) format − 出力する文字列と、変数の埋め込み方(書式)を指定