PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのvfprintf()関数の使い方を徹底解説!書式付き文字列をストリームへ出力する方法

vfprintf()関数とは

PHPのvfprintf()関数は、書式を指定した文字列(フォーマット済み文字列)を、ファイルやソケットなど特定の出力先(ストリーム)に書き込むための関数です。処理が成功すると、出力された文字列の長さを戻り値として返します。

なお、似た関数として個別の引数を受け取るfprintf()がありますが、vfprintf()は引数を配列としてまとめて渡せる点が特徴です。配列に格納された複数の値を一度に扱いたい場合に便利です。

基本構文

vfprintf(stream, format, arg)

パラメータの詳細

  • stream − 文字列を出力する先(ファイルポインタなど)を指定します。
  • format − 出力する文字列と、その中で変数をどのように整形するかを指定します。
  • arg − 書式文字列内の「%」記号に対応して挿入される値を含む配列を指定します。

formatで使える主な書式指定子

指定子意味
%%パーセント記号(%)そのものを返す
%b2進数として出力
%cASCIIコードに対応する文字を出力
%d符号付き10進数(負・0・正)
%e小文字を使った指数表記(例:1.2e+2)
%E大文字を使った指数表記(例:1.2E+2)
%u符号なし10進数(0以上)
%f浮動小数点数(ロケール設定に依存)
%F浮動小数点数(ロケール設定に依存しない)
%g%eと%fのうち短い方を採用
%G%Eと%fのうち短い方を採用
%o8進数として出力
%s文字列として出力
%x16進数として出力(英字は小文字)
%X16進数として出力(英字は大文字)

戻り値

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系の書式指定機能を活かしながら、結果を画面ではなく任意のストリーム(ファイルなど)へ直接出力したい場合に活躍します。引数を配列で渡せるため、可変長のデータをまとめてフォーマットする際にも柔軟に対応できるのが魅力です。ログファイルへの整形済みデータの書き込みなど、実用的な場面でぜひ活用してみてください。

  1. PHPのsubstr()関数の使い方を徹底解説!文字列の一部を抽出する方法

    PHPのsubstr()関数は、文字列の一部を抽出して返すための関数です。指定した開始位置から、指定した長さ分だけ文字列を取り出すことができます。構文substr(str, begin, len)パラメータstr − 対象となる元の文字列を指定します。begin − 文字列のどこから抽出を開始するかを指定します。正の数 − 文字列の先頭から数えて指定位置から抽出を開始します。負の数 − 文字列の末尾から数えて指定位置から抽出を開始します。0 − 文字列の最初の文字から抽出を開始します。len − 抽出する文字列の長さを指定します。省略した場合は、開始位置から文字列の末尾までが返されます。正の数

  2. PHPのfprintf()関数とは?ストリームへのフォーマット済み文字列の書き込み方法を解説

    PHPのfprintf()関数は、指定したストリーム(ファイルなど)にフォーマット済みの文字列を書き込むための関数です。printf()と同じ書式指定が使えますが、出力先をブラウザではなくファイルやストリームにできる点が大きな特徴です。ログの記録やデータファイルの生成などに活用できます。 構文 fprintf(stream, format, argument1, argument2, ...) パラメータ stream − 文字列の書き込み・出力先となるストリーム(通常はfopen()で取得したファイルポインタを指定します) format − 出力する文字列と、変数の埋め込み方(書式)を指定