sprintf()是PHP 中一個非常實用的字符串格式化函數,它可以將變量插入到格式模板中,並以指定的方式進行格式化。無論是處理數值、小數點對齊,還是生成結構化的文本輸出, sprintf()都能派上用場。
本文將帶你快速掌握sprintf()的基本用法、格式化參數及一些實用技巧。
sprintf()是PHP 的字符串格式化函數,它的基本語法如下:
sprintf(string $format, mixed ...$values): string
它根據$format字符串中的佔位符,格式化後面的值,並返回一個格式化後的字符串(不會直接輸出)。
$name = "Alice";
$age = 30;
echo sprintf("我的名字是 %s,我今年 %d 歲。", $name, $age);
輸出:
我的名字是 Alice,我今年 30 歲。
sprintf()使用類似於C 語言的格式控制符。下面是一些常用的格式符號:
格式符 | 含義 |
---|---|
%s | 字符串 |
%d | 有符號十進制整數 |
%u | 無符號十進制整數 |
%f | 浮點數 |
%x | 十六進制(小寫) |
%X | 十六進制(大寫) |
%o | 八進制 |
%% | 輸出一個百分號 |
echo sprintf("編號:%04d", 42); // 輸出 編號:0042
說明: %04d表示總共佔4 位,不足的前面補0。
$price = 123.456;
echo sprintf("價格:%.2f 元", $price); // 輸出 價格:123.46 元
說明: .2表示保留兩位小數,會四捨五入。
$userId = 987;
$token = 'abc123';
$url = sprintf("https://gitbox.net/user/%d/profile?token=%s", $userId, $token);
echo $url;
輸出:
https://gitbox.net/user/987/profile?token=abc123
echo sprintf("反過來說:%2\$s 是 %1\$s", "老師", "學生");
// 輸出:反過來說:學生 是 老師
說明: %2\$s表示使用第二個參數, %1\$s表示使用第一個參數。
sprintf()是返回字符串,而printf()是直接輸出。兩者語法幾乎一致:
$message = sprintf("Hello, %s!", "World");
echo $message;
// 等價於
printf("Hello, %s!", "World");
$level = "ERROR";
$message = "無法連接數據庫";
$log = sprintf("[%s] %s", $level, $message);
echo $log;
// 輸出:[ERROR] 無法連接數據庫
printf("%-10s | %5s\n", "產品", "價格");
printf("%-10s | %5.2f\n", "蘋果", 3.5);
printf("%-10s | %5.2f\n", "香蕉", 2.2);
輸出:
產品 | 價格
蘋果 | 3.50
香蕉 | 2.20
說明: %-10s表示左對齊,佔10 個字符。
不要忘了%後面的格式符,漏寫會拋出錯誤。
多個格式化參數時,順序必須與format 中匹配,除非使用編號。
可以嵌套sprintf()生成更複雜的輸出內容。
sprintf()是一個強大而靈活的字符串格式化工具,掌握它能讓你寫出更整潔、可維護的PHP 代碼。無論是處理文本輸出、構造URL,還是格式化數據展示, sprintf()都是你不可或缺的利器。
趕緊在項目中用起來吧!