文字列をフォーマットするには、sprintf()を使用する方がはるかにクリーンで安全です。
たとえば、入力変数を処理する場合は、予期される形式を事前に指定することで(たとえば、文字列[ %s
]または数値[ %d
]を期待している場合)、予期しない驚きを防ぎます。これはSQLインジェクションのリスクの可能性に役立つ可能性がありますが、文字列が引用符で構成されている場合は防止できません。
また、浮動小数点数の処理にも役立ちます。桁精度(たとえば%.2f
)を明示的に指定できるため、変換関数を使用する必要がありません。
他の利点は、主要なプログラミング言語のほとんどに独自の実装があることです sprintf()
備えているため、慣れれば、新しい言語を学習する(文字列を連結する方法や浮動小数点数を変換する方法など)よりも使いやすくなります。
要約すると、よりクリーンで読みやすいコードを作成するために使用することをお勧めします。
たとえば、以下の実際の例を参照してください。
$insert .= "('".$tr[0]."','".$tr[0]."','".$tr[0]."','".$tr[0]."'),";
または、たとえば次のように出力する簡単な例'1','2','3','4'
:
print "foo: '" . $a . "','" . $b . "'; bar: '" . $c . "','" . $d . "'" . "\n";
そしてフォーマットされた文字列で印刷する:
printf("foo: '%d','%d'; bar: '%d','%d'\n", $a, $b, $c, $d);
どこ printf()
に相当しますsprintf()
、(変数に)返すのではなく、フォーマットされた文字列を出力します。
どちらがより読みやすいですか?