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() 都是你不可或缺的利器。
赶紧在项目中用起来吧!