PHP sprintf() 函數詳解


PHP中,sprintf()的作用是把字符串進行多種類型的格式化
一般用法如下:

sprintf ( string $format [, mixed $... ] ) : string

返回一個按要求格式化后的字符串
其中$format是格式化規則,mixed $即待格式的參數

 

$format規則較為復雜,包含兩部分,一部分是普通字符(排除 % ),另一部分是 %...,返回結果中普通字符原樣輸出,%...用按特定要求格式化對應參數的結果替換。

%...的一般規范是

%[argnum$][flags][width][.precision]specifier

[]均為可選,%...specifier,不可省略,下面對每一項挨個介紹一下。

 

  • [argnum$]

指定在轉換中使用哪個參數
例如:

$format = 'The %2$s contains %1$d monkeys';
echo sprintf($format, $num, $location);

%2$s 代表使用第二個參數 $location,%1$d 使用第一個參數 $num。

 

  • [flags]

標志位,主要有下面幾個:

- 在給定的字段寬度內左對齊(即右邊自動填充);右對齊是默認設置,如:

sprintf("%05s", 1234) => 01234
sprintf("%-05s", 1234) => 12340

+ 在正數前加上加號 + ; 默認情況下,只有負數前綴有負號,如:

sprintf("%+5d", 1234) => +1234

(空間) 用空格填充結果。這是默認值。
0 左邊用0填充。使用s指示符時,它也可以右補零。
'(指定字符) 設置特定填充字符,如

sprintf("%'.9d", 123); => ......123

 

需要注意的是,以上標識符是可以同時使用多個的(一直疑惑官網上為什么用表示復數的flags),有沖突時寫在后面的會覆蓋前面的,比如同時使用 '(字符)和0填充,比如:

sprintf("%'.09d", 123); => 000000123
sprintf("%0'.9d", 123); => ......123

 

  • [width]

寬度
轉換結果的最小字符數,包含所有字符,包括小數點和小數點后面的位數
當待轉換參數位數不足此值時,轉換時會按照一定的規則填充滿。

 

  • [.precision]

精度
其含義取決於后面的specifier,主要分為三類
e, E, f, F: 代表小數位數,最常用,如:

sprintf("%.3e",362525200) =》 3.625e+8
sprintf("%01.2f", 123.1) =》 123.10

g, G: -
s: 顯示的字符串的位數,這個比較難理解,看下面例子:

 

sprintf("%4.2s", 1234); =》 12

 

即只顯示原參數的位數,位數不足時填充完成。

 

  • specifier 

標識符比較多,但較常用的主要是
f, 輸出指定位數的小數
s, 輸出定長的字符串
有個特殊字符 %,需要這樣 %%

 

以上主要根據來自PHP官網對應頁面()編譯和擴展,如有錯誤歡迎指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM