在日常PHP 編程中,我們常常需要以特定格式輸出字符串或數字,這時候sprintf()函數就是你的好幫手。它不僅能讓輸出更加可控,還能讓代碼更整潔、可讀性更強。本文將帶你係統地掌握sprintf()的使用方法和技巧。
sprintf()是PHP 中的一個內置函數,用於將格式化的字符串作為結果返回(不會直接輸出)。這與printf()類似,但printf()是直接輸出,而sprintf()是返回結果後供你自由處理。
函數原型如下:
string sprintf(string $format, mixed ...$values)
$format :格式模板字符串。
$values :要插入格式模板中的一個或多個值。
$name = '小明';
$city = '北京';
$message = sprintf("你好,我是%s,我來自%s。", $name, $city);
echo $message;
輸出結果:
你好,我是小明,我來自北京。
$price = 49.5;
$message = sprintf("商品價格是 %.2f 元", $price);
echo $message;
輸出結果:
商品價格是 49.50 元
說明:
%.2f表示保留兩位小數的浮點數。
格式符 | 含義 | 示例 |
---|---|---|
%s | 字符串 | sprintf("Hello %s", "Tom") |
%d | 整數(十進制) | sprintf("年齡是%d", 25) |
%f | 浮點數 | sprintf("分數是%.1f", 98.6) |
%x | 十六進位 | sprintf("編號是%x", 255) |
%02d | 不足兩位補零的整數 | sprintf("編號是%02d", 5) =>編號是05 |
假設你需要生成一個產品詳情頁的鏈接,參數包括產品ID 和名稱:
$productId = 123;
$productName = '藍牙耳機';
$url = sprintf("https://gitbox.net/product/view.php?id=%d&name=%s", $productId, urlencode($productName));
echo $url;
輸出結果:
https://gitbox.net/product/view.php?id=123&name=%E8%93%9D%E7%89%99%E8%80%B3%E6%9C%BA
你可以用編號方式在格式串中重複某個參數:
$name = '張三';
$message = sprintf("%1\$s,你好!%1\$s,請注意查收郵件。", $name);
echo $message;
輸出結果:
張三,你好!張三,請注意查收郵件。
說明: %1\$s表示使用第一個參數。
$line = sprintf("| %-10s | %10s |", "商品", "價格");
echo $line;
輸出結果:
| 商品 | 價格 |
說明:
%-10s :左對齊,佔10個字符寬;
%10s :右對齊,佔10個字符寬。
使用sprintf()雖然格式化靈活,但在涉及輸出到網頁、數據庫、文件時仍然要注意安全:
輸出到網頁時,記得使用htmlspecialchars() ;
構建SQL 時,避免直接用sprintf()拼接,建議使用參數綁定(如PDO 或mysqli 的預處理語句);
URL 中的參數建議用urlencode()編碼。
sprintf()是一個功能強大且優雅的格式化工具,只要掌握基本語法和格式控制符,你就能在字符串處理上如虎添翼。無論是頁面展示、日誌記錄、還是生成結構化數據,它都能幫你寫出更清晰、可維護的代碼。
快把它應用到你的項目中吧!