函式原型
string str_pad(string $input, int $pad_length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT)
參數說明
| 參數 | 說明 |
$input | 要填充的原始字串 |
$pad_length | 目標總長度;若小於原字串長度則不處理 |
$pad_string | 填充字元(可為多字元),預設為空白 |
$pad_type | 填充方向:STR_PAD_RIGHT(預設)、STR_PAD_LEFT、STR_PAD_BOTH |
常數值對照
STR_PAD_RIGHT:右側填充(預設)
STR_PAD_LEFT:左側填充
STR_PAD_BOTH:兩側填充,無法平均分配時右側多補一個
實戰範例
範例 1:右側填充點號
$str = "Hello World";
echo str_pad($str, 20, ".");
// 輸出:Hello World.........
範例 2:左側填充點號
$str = "Hello World";
echo str_pad($str, 20, ".", STR_PAD_LEFT);
// 輸出:.........Hello World
範例 3:兩側填充多字元模式
$str = "Hello World";
echo str_pad($str, 20, ".:", STR_PAD_BOTH);
// 輸出:.:.:Hello World.:.:.
進階應用:數字補零、表格對齊
// 訂單編號補零:ORD-000123
$orderId = 123;
echo 'ORD-' . str_pad($orderId, 6, '0', STR_PAD_LEFT);
// CLI 表格欄位對齊
printf("%-20s %10s\n", 'Product', 'Price');
foreach ($products as $p) {
printf("%-20s %10s\n", $p['name'], str_pad($p['price'], 10, ' ', STR_PAD_LEFT));
}
注意事項
$pad_string 為多字元時,會重複截取以達到指定長度
- 若
$pad_length < strlen($input),直接回傳原字串
- 多位元組字元(中文等)按位元組計算長度,視覺寬度可能不符預期,需搭配
mb_strwidth 處理