PHP sprintf 基本語法
string sprintf ( string $format , $args1 , $args2 , $args3 , $arg4 , $arg5 ... )
sprintf 函式小括號內的第一個參數 $format 是原始格式化轉換字串,後方接著一連串的 $args 是要插入 $format 字串的字符參數,每個字符參數將依序插入到原始格式化轉換字串($format)中的百分號(%)符號處,並完成格式化,例如 $args1 插入到 $format 的第 1 個 % 位置、$args2 插入到第 2 個 % 位置、$args3 插入到第 3 個 % 位置 ... 以此類推,範例中有詳細的參考。
原始字串中 $format 參數通常寫成 % 加上隔式化代號,可能的形式如下
%% | 返回百分比符號,不需要任何參數 |
%b | 二進位的整數參數 |
%c | 參數被視為一個 ASCII 值字符整數 |
%d | 十進位的整數參數 |
%e | 參數會被視為科學記號表示法,例如 1.2e+2 |
%E | 與 %e 類似,但呈現為英文字母大寫,例如 1.2E+2 |
%u | 參數被做為一個無符號十進位整數 |
%f | 浮點數(locale aware) |
%F | 浮點數(non-locale aware,PHP 4.3.10 與 PHP 5.0.3 新增) |
%g | 比 %e、%f 短。 |
%G | 比 %E、%F 短。 |
%o | 八進位制整數參數 |
%s | 字串 |
%x | 十六進位數(小寫字母) |
%X | 十六進位數(大寫字母) |
此表也可以對照使用於 PHP printf 函式的 $format 參數。
PHP sprintf 參考範例一、帶入字串、數字與浮點數轉換
<?php
$string = 'to';
$number = '5';
$format = 'Welcome %s Wibibi.%f is float of %u.';
echo sprintf($format,$string,$number,$number);
?>
以上範例輸出結果$string = 'to';
$number = '5';
$format = 'Welcome %s Wibibi.%f is float of %u.';
echo sprintf($format,$string,$number,$number);
?>
Welcome to Wibibi.5.000000 is float of 5.
範例中我們使用了三個參數,讓 sprintf 嘗試轉換,第一個參數 $string 的值為字串"to",很輕鬆的帶入至 $format 變數第一個 % 符號的位置,第二個參數 $number 原本的值為數字 5,在 $format 的第二個 % 符號,格式化為浮點數(%f),所以輸出結果有小數點,且達到小數點後五位,因為我們沒有特別設定小數點的位數,下一個範例將控制小數點的位數,第三個參數格式化為十進位整數,所以直接是 5。PHP sprintf 參考範例二、控制小數點的位數
<?php
$number = '5';
$format = "%1\$.3f is float of %u.";
echo sprintf($format,$number,$number);
?>
範例輸出結果$number = '5';
$format = "%1\$.3f is float of %u.";
echo sprintf($format,$number,$number);
?>
5.000 is float of 5.
sprintf 的 $format 參數中,第一個格式化部分寫成「%1\$.3f 」所代表的意思即為浮點數處理至小數點後第三位,數字代表小數位數,這裡虛注意的是 $format 等號右邊必須使用雙引號("")打包內容,若使用單引號('')會讓 sprintf 函式無法成功帶入變數並格式化。相關語法研究