首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP sprintf() 格式化字串完整指南

     編輯:PHP 綜合知識

語法

sprintf(string $format, mixed ...$values): string

格式化佔位符完整表

進階功能:引數編號、寬度、精度、填補

<?php
$num = 123.456789;

// 1. 引數編號 %1$ 重複使用同一引數
echo sprintf('%1$d / %1$08b / %1$04x', 42); // "42 / 00101010 / 002a"

// 2. 寬度與靠左靠右 %[width] / %-[width]
echo sprintf("|%10s|", 'a');  // "|         a|"
echo sprintf("|%-10s|", 'a'); // "|a         |"

// 3. 精度 .N (浮點數小數位、字串截斷)
echo sprintf("%.2f", $num);    // "123.46"
echo sprintf("%.5s", 'hello world'); // "hello"

// 4. 零填補 %0[width]d
echo sprintf("%05d", 7);       // "00007"

// 5. 正負號強制顯示 %+d / % d
echo sprintf("%+d", 10);       // "+10"
echo sprintf("% d", -10);      // "-10" (正數前加空格)

// 6. 組合:%[arg$][flags][width][.precision]specifier
echo sprintf('%2$03d %1$05s', 'abc', 7); // "007 00abc"
?>

實用場景範例

組合 MIME 類型

$mime = sprintf('%s/%s', 'application', 'pdf'); // "application/pdf"

產生固定長度流水號

$sn = sprintf('ORD%08d', 123); // "ORD00000123"

SQL 參數化佔位符 (PDO 不需手動,但有時用於組合結構)

$sql = sprintf(
    'SELECT * FROM %s WHERE %s = ? ORDER BY %s LIMIT ?,?',
    'users', 'status', 'created_at'
);

格式化金額(含千分位、固定小數)

// number_format 更適合,但 sprintf 可組合
echo sprintf('NT$ %s', number_format(1234567.5, 2, '.', ',')); // "NT$ 1,234,567.50"

常見錯誤

  • 佔位符數量不符:少於引數會警告,多於引數需用編號佔位符 `%1$s` 重複使用
  • 型別不符:`%d` 接收字串會轉整數 (導致 0),建議先轉型
  • 多位元組字串寬度:`%10s` 寬度按**位元組**計算,中文會對齊錯位,需用 `mb_strimwidth` 或自行處理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
佔位符說明範例輸出
%%百分號字面值%
%b二進位1010
%cASCII 字元A
%d有號十進位整數123
%e科學記號 (小寫 e)1.23e+2
%E科學記號 (大寫 E)1.23E+2
%u無號十進位整數123
%f浮點數 (受 locale 影響)123.456000
%F浮點數 (不受 locale 影響)123.456000
%g自動選擇 %e 或 %f (短者)123.456
%G自動選擇 %E 或 %F123.456
%o八進位173
%s字串hello
%x十六進位 (小寫)7b
%X十六進位 (大寫)7B