【PHP】sprintf関数の使い方(文字列を任意の書式に変換する)

アイキャッチ画像sprintfPHP
この記事は約3分で読めます。
スポンサーリンク

【PHP】sprintf関数の使い方(文字列を任意の書式に変換する)

php3~ で使用できます。

sprintf関数 : 書式

sprintf(フォーマット [, 文字列, 文字列...])

戻り値:指定したフォーマットに変換された文字列

sprintf関数は、文字列を指定したフォーマットに変換します。すぐに出力する目的ではなく、加工した文字列を変数にセットして後処理で使える点が便利です。
  • フォーマットに指定する文字列
    %パーセント文字
    b引数を整数として扱いバイナリ値として出力
    c引数を整数として扱いASCII文字として出力
    d引数を整数として扱い10進数として出力
    u引数を整数として扱い符号なし10進数として出力
    f引数を浮動小数点として扱い浮動小数点として出力
    o引数を整数として扱い8進数として出力
    s引数を文字列として出力
    x引数を整数として扱い16進数として小文字で出力
    X引数を整数として扱い16進数として大文字で出力
    数値引数の表示桁数を指定
    空白指定桁数に満たない場合は空白で埋める
    0指定桁数に満たない場合は0で埋める

sprintf関数 : 使用例

  • 文字列を変換する
    $str = "出身地は%sです";
    $res = sprintf($str, "名古屋"); →変数$resに「出身地は名古屋です」をセット
  • sprintf関数でSQL文を作成する
    $str = "INSERT INTO tbl_dra VALUES (%d, '%s');";
    $res = sprintf($str, 11, "川上");

    変数$resにセットされる内容
    INSERT INTO tbl_dra VALUES (11, '川上');

  • 頭に0を埋めて8桁の文字列にする
    $jan = '1234567';
    echo sprintf("%08d",$jan); →「01234567」を出力

sprintf関数 : 参考

  • sprintf関数で同じ引数を何度か使用する
    $str = '%1$D月%2$d日~%1$D月%3$D日';
    echo sprintf($str, 12 1 31); →「12月1日~12月31日」を出力

    <解説>
     同じ引数を何度も使う場合や、順番が入れ替わる可能性がある場合は、「%1$d」のような指示子を使うと便利です。この指示子は、引数の型(例:d)の前に、何番目の引数を使うかを「%1$d」のような形式で付加したものです。この例でもsprintfでは「12」という引数は1度しか指定していませんが「%1$d」という指示子で2回出力しています。この指示子を使う場合、テンプレート文字列はシングルクォーテーション「'」で囲むことにしましょう。

関連リンク

PHPトップページ
PHP入門 & 関数リファレンス
PHPの初心者からベテランまで活用できるページです。初めての方はもちろん、もう一度基礎から学びなおしたい方は、基礎知識のページを順に読んで理解しましょう。ベテランの方向けには、関数の書式・パラメーターを調べられる構成になっています。PHPプログラム作成時にご活用下さい。
タイトルとURLをコピーしました