sprintf 按占位符拼出一段字符串并返回结果,不直接输出;想立刻打印用 printf,想把数组当参数传用 vsprintf。
常用占位符:%s 字符串、%d 整数、%f 浮点、%x 十六进制、%o 八进制、%b 二进制、%c 字符、%% 输出一个百分号本身。
占位符中间可以加修饰:%05d 不足 5 位前面补 0,%-10s 左对齐补空格到 10 位,%.2f 保留两位小数,%'*10s 用星号补齐宽度。
<?php
// 基础用法:占位符按顺序对应后面的参数
$name = '张三';
$age = 28;
echo sprintf('%s今年%d岁', $name, $age); // 张三今年28岁
// 补零与小数位
$orderNo = sprintf('NO%06d', 42); // NO000042
$price = sprintf('%.2f', 19.9); // 19.90
// 对齐:负号表示左对齐
$line = sprintf("[%-8s][%8s]", 'left', 'right');
// 位置占位符,参数可重复使用
$tpl = '%2$s是%1$s'; // 先取第2个参数,再取第1个
echo sprintf($tpl, '北京', '首都'); // 首都是北京
// 格式化数字为十六进制
$hex = sprintf('0x%X', 255); // 0xFF
参数个数比占位符少会报错,多了不会报错,只是多出来的参数用不上。