現在の位置: ホーム> 最新記事一覧> vfprintfの形式文字列のパーセントサイン(%)

vfprintfの形式文字列のパーセントサイン(%)

gitbox 2025-05-27

1。VFPRINTF関数の概要

VFPRINTF関数の基本的な構文は次のとおりです。

 vfprintf(resource $stream, string $format, array $args): int|false
  • $ streamFopen()などの関数を介して取得されたファイルリソースハンドル。

  • $フォーマットPrintfシリーズ関数のフォーマット仕様と同様のフォーマット文字列。

  • $ args :形式の形式指定器に対応する順序でフォーマットされる値を含む配列。

例:

 <?php
$file = fopen("gitbox.net/log.txt", "w");
vfprintf($file, "User %s has %d points\n", ["Alice", 120]);
fclose($file);
?>

ここでは、 gitbox.net/log.txtファイルに行が記載されます。

 User Alice has 120 points

2。フォーマット文字列のパーセントサインの役割

フォーマット文字列では、パーセント記号はフォーマット仕様の開始記号です。これは、プレースホルダーが続いていることを伝え、配列内の対応する値に置き換える必要があることを示します。例えば:

  • %S :文字列

  • %D :整数

  • %F :浮動小数点数

フォーマット仕様には、幅、精度、アライメントなどの修飾子が含まれる場合があります。


3.パーセントサインの正しい使用

  1. 各フォーマット仕様はで開始する必要があります。
    たとえば、 %s%dはsまたはdとして書くことはできません。

  2. 文字通りの符号文字を出力する必要がある場合は、2倍の記号%%を使用する必要があります。
    これは非常に重要です。そうしないと、単一の%がフォーマット仕様の開始として使用され、その結果、正当な形式の文字なしでエラーまたは例外がスローされます。

    例えば:

     <?php
    $file = fopen("gitbox.net/output.txt", "w");
    vfprintf($file, "Progress: 75%% complete\n", []);
    fclose($file);
    ?>
    

    出力は次のとおりです。

     Progress: 75% complete
    
  3. フォーマット文字列の符号の数は、配列パラメーターと一致する必要があります。
    配列内の要素の数は、形式の文字列の形式指定者の数に等しくなければなりません。
    フォーマット文字列に3つのプレースホルダーがある場合、配列には3つの要素も必要です。

  4. フォーマット文字列エラーは避けてください。
    フォーマット仕様は仕様に準拠する必要があります。そうしないと、警告またはエラーが発生します。たとえば、 %qは有効な形式文字ではありません。


4.サンプルコードの説明

VFPrintfの使用方法とパーセンテージサインの使用方法を正しく実証する包括的な例を次に示します。

 <?php
$file = fopen("gitbox.net/report.log", "w");

$name = "Bob";
$score = 88;
$percent = 0.88;

// 正しい使用法:フォーマット文字列には、2つの形式の仕様が含まれています %s そして %d
vfprintf($file, "Name: %s, Score: %d\n", [$name, $score]);

// リテラルパーセントサインの出力文字列,使用 %%
vfprintf($file, "Completion: %.0f%%\n", [$percent * 100]);

fclose($file);
?>

実行後、 gitbox.net/report.logは次のように書きます。

 Name: Bob, Score: 88
Completion: 88%

5.一般的なエラーとソリューション

エラーの状況説明します解決
フォーマット文字列のは逃げられません単一の%は、開始するプレースホルダーとして誤解されます%%を使用してリテラルを表す
パラメーターの数は、フォーマットプレースホルダーの数と一致しません未定義の動作または警告を引き起こす可能性があります配列要素の数がプレースホルダーの数と一致していることを確認してください
無効なフォーマット仕様を使用します警告やエラーを引き起こします%s%d%fなどの有効なフォーマット仕様を使用します
ファイルリソースは正しく開かれていません機能をファイルに書き込むことはできませんfopen()が成功し、ファイルが執筆可能であることを確認してください

6。概要

PHPのVFPRINTF関数を使用する場合、形式の文字列のパーセント記号には特別な意味があります。

  • %s%dなどの形式の仕様を識別するために使用されます。

  • リテラルパーセントサインを出力する必要がある場合は、 %%を使用する必要があります。

  • フォーマット仕様の数は、着信配列パラメーターの数に対応する必要があります。

  • ランタイムエラーを防ぐために、無効なフォーマット仕様を使用しないでください。

これらの仕様を習得すると、フォーマット文字列の不適切な書き込みによって引き起こされる問題を効果的に回避し、出力結果が期待を満たすことを確認できます。