sprintf
將字符串格式化。
語法: string sprintf(string format, mixed [args]...);
傳回值: 字符串
函數種類: 資料處理
內容說明
本函數用來將字符串格式化。參數format 是轉換的格式,以百分比符號% 開始到轉換字元為止。而在轉換的格式間依序包括了
1. 填空字符。 0 的話表示空格填入0;空格為內定值,表示空格就放著。
2. 對齊方式。內定值為向右對齊,負號表向左對齊。
3. 欄位寬度。為最小寬度。
4. 精確度。指在小數點後的浮點數位數。
型態,見下表
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
轉換字元
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
% 印出百分比符號,不轉換。
b 整數轉成二進位。
c 整數轉成對應的ASCII 字元。
d 整數轉成十進位。
f 倍精確度數字轉成浮點數。
o 整數轉成八進位。
s 整數轉成字串。
x 整數轉成小寫十六進位。
X 整數轉成大寫十六進位。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-=-=-=-=-=-=-=-
範例
=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
使用範例
<?
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// 此時變數$money 值為"123.1";
$formatted = sprintf ("%01.2f", $money);
// 此時變數$ formatted 值為"123.10"
?>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-=-=-=-=-=-=-=-=-
這個%01.2f 是什麼意思呢?
首先這個% 符號是開始的意思,他寫在最前面表示指定格式要開始了。 也就是"起始字元", 直到出現"轉換字元" 為止,就算格式終止。
然後跟在% 符號後面的是0 這個零是"填空字符" 表示,如果位置空著就用0來填滿。
在0 後面的是1 這個1 是規定,小數點前面的數字佔位要有1位以上。
如果把1 改成2 如果$money 的值為1.23 ,則$formatted 的值將為01.23
因為,在小數點前面的數字只佔了1位,按照上面所規定的格式,小數點前數字應該佔2位,現在只有1位,所以,用0來填滿。
到目前,在%01 後面的.2 (點2) 就很好理解了,它的意思是,規定,小數點後的數字,必需佔2位. 如果這時候,$money 的值為1.234,則$ formatted 的值將為1.23。
為什麼4 不見了呢? 因為,在小數點後面按照上面的規定,必需且僅能佔2位。 可是$money 的值中,小數點佔了3位,所以,4 被去掉了,只剩下23。
最後,以f "轉換字元" 結尾,其他轉換字元請自行參考上面的轉換字元清單。
關於對齊
如果在% 起始符號後面加上- (負號) 則,將會把數字以向右對齊的方式進行處理。
列子
<?
$money = 1.4;
$formatted = sprintf ("%-02.2f", $money);
echo $formatted;
?>
這時候,$formatted 將不會再是01.40 而是1.400