2008年7月23日 星期三

sprintf 和 printf 之用法

sprintf只格式化不印出來

printf格式化後印出來

格式為printf("abcde%'a-20s fgh %01.2f ijk",$a,$b)

從%開始依序為

說明使用何種字元來填塞結果成為適當的字串長度,它可以是個空白字元或是 0(字元 0),
它預設上是使用空白來填塞。要替換填塞字元,可以在字首前面加上單引號( ' )來指定。

指定對齊方式,說明結果應該要靠左對齊還是靠右對齊,預設是靠右對齊,可以使用字元 "-" 來使它靠左對齊。

指定寬度,說明這個轉換要產生出多少(最少)字元。

指定精準度,說明要顯示到小數點第幾位,這個選項對於浮點數以外的型態沒有影響。

指定型態說明要將參數看待成何種型態,可能的型態有 :

% - 百分比字元,不需要參數

b - 將參數看待成整數,而且結果為二進制的值

c - 將參數看待成整數,而且結果為此ASCII值的字元

d - 將參數看待成整數,而且結果為十進位的數值

f - 將參數看待成浮點數,而且結果為浮點數

o - 將參數看待成整數,而且結果為八進制的數值

s - 將參數和結果都看待成字串

x - 將參數看待成整數,而且結果為十六進制的數值(小寫字母)

X - 將參數看待成整數,而且結果為十六進制的數值(大寫字母)

範例:

$a=13.1

printf("%010.2f",$a);

結果:0000000013.10

$b=abcd

printf("%'_-10s",$b);

結果:abcd______

備註:替代字元通常是空格,但列印出來卻無空格,是因為列印在網頁上會把空格省略

所以要加str_replace()函示,把空格轉成& nbsp;

以上面的範例改成str_replace(' ','& nbsp;',sprintf("%10s",$b));即可