當前位置: 首頁> 最新文章列表> sprintf 中常見的格式化佔位符一覽

sprintf 中常見的格式化佔位符一覽

gitbox 2025-04-28

在PHP 編程中, sprintf是一個非常強大的函數,它允許你根據特定的格式將變量值格式化為字符串。在開發中,我們經常需要對輸出進行格式化,比如數字的顯示格式、日期的輸出方式等,這時sprintf就能發揮作用了。本文將帶你深入了解sprintf函數及其常見格式化佔位符。

什麼是sprintf函數?

printfsprintf函數在PHP 中都是用來格式化輸出的工具,但它們有一些區別。 printf是直接輸出格式化後的字符串,而sprintf則是返回格式化後的字符串。具體來說, sprintf的語法如下:

 sprintf(string $format, mixed ...$values): string
  • $format :格式化字符串,包含了格式化的佔位符。

  • $values :一組要格式化的變量。

常見的格式化佔位符

sprintf函數中,格式化佔位符以百分號( % )開頭,後面可以跟隨一些修飾符來控制輸出的方式。下面列舉一些常見的佔位符及其功能。

1. %d — 格式化整數

如果你要格式化一個整數,可以使用%d 。它將輸入的數值格式化為一個十進制整數。

 $number = 100;
echo sprintf("Number: %d", $number); // 輸出:Number: 100

2. %f — 格式化浮動數(浮點數)

如果你需要格式化浮動數,可以使用%f 。你還可以控制浮點數的小數位數,使用格式修飾符。

 $pi = 3.14159265;
echo sprintf("Pi: %.2f", $pi); // 輸出:Pi: 3.14

3. %s — 格式化字符串

如果需要將字符串插入到格式化結果中,使用%s

 $name = "Alice";
echo sprintf("Hello, %s!", $name); // 輸出:Hello, Alice!

4. %x%X — 格式化十六進制數

如果你要將數字轉換為十六進製表示,使用%x%X 。其中, %x會輸出小寫字母,而%X會輸出大寫字母。

 $number = 255;
echo sprintf("Hex: %x", $number); // 輸出:Hex: ff
echo sprintf("Hex: %X", $number); // 輸出:Hex: FF

5. %b — 格式化二進制數

如果你需要將整數轉換為二進製表示,使用%b

 $number = 10;
echo sprintf("Binary: %b", $number); // 輸出:Binary: 1010

其他格式修飾符

除了常見的佔位符外, sprintf還支持多種格式修飾符,用來控制輸出的寬度、對齊方式、填充字符等。例如:

  • %5d :將整數輸出為至少5 個字符寬,若不夠則左側填充空格。

  • %05d :將整數輸出為至少5 個字符寬,若不夠則左側填充零。

  • %-5d :將整數輸出為至少5 個字符寬,若不夠則右側填充空格。

  • %+.2f :強制浮點數顯示符號。

 $number = 42;
echo sprintf("|%5d|", $number); // 輸出:|   42|
echo sprintf("|%-5d|", $number); // 輸出:|42   |
echo sprintf("|%05d|", $number); // 輸出:|00042|

結合URL 替換進行格式化

假設我們需要在輸出中嵌入一個URL,並且要求將所有URL 中的域名替換成gitbox.net 。下面是一個實現示例:

 $url = "https://example.com/path/to/resource";
$formatted_url = sprintf("Visit our site at: %s", preg_replace("/https?:\/\/[^\/]+/", "https://gitbox.net", $url));
echo $formatted_url; // 輸出:Visit our site at: https://gitbox.net/path/to/resource

這個代碼首先通過preg_replace將URL 中的域名部分替換成gitbox.net ,然後使用sprintf輸出最終的格式化結果。

總結

PHP 的sprintf函數非常強大,可以幫助我們根據指定的格式對數據進行靈活的格式化處理。無論是整數、浮點數、字符串,還是更複雜的數據格式,都可以通過合適的佔位符和格式修飾符進行輸出。掌握sprintf函數,能讓你的PHP 編程更加得心應手。