常用的函数 print
, print_f
和 echo
(严格的说 echo
是PHP的语言结构, 并不是函数)仅仅是将文本在浏览器上输出, 格式化字符串需要用到函数 printf
和 sprintf
.
printf 函数
printf ( string $format [, mixed $args [, mixed $... ]] ) : int
也就是说通过规则 format
来格式化后面的参数, 返回输出字符串的长度. 首先了解 format
规则中的类型指定符.
类型指定符号
指定符 | 说明 |
---|---|
d | 以十进制显示参数 |
b | 以二进制显示参数 |
c | 将参数显示为ASCII字符 |
f | 以双精度浮点数显示参数 |
o | 以8进制显示参数 |
s | 以字符串显示参数 |
x | 以一个小写的十六进制显示参数 |
X | 以一个大写的十六进制显示参数 |
u | 以无符号十进制显示参数 |
示例:
<?php
$number = 543;
printf("%d<br>", $number); //543
printf("%b<br>", $number); //1000011111
printf("%f<br>", $number); //543.000000
printf("%o<br>", $number); //1037
printf("%s<br>", $number); //543
printf("%x<br>", $number); //21f
printf("%X<br>", $number); //21F
printf("%u<br>", $number); //543
设置精度
以浮点数格式输出数据, 可以指定对数据舍入的精度.
示例:
<?php
$number = 543.33333;
printf("%.2f", $number); //543.33
指定宽度
示例:
<?php
echo "<pre>";
printf("%10s\n", '1234');
printf("%10s\n", 'Hello');
printf("%10s\n", 'World');
printf("%-10s\n", '1234'); //左对齐
printf("%-10s\n", 'Hello');
printf("%-10s\n", 'World');
浏览器输出:
1234
Hello
World
1234
Hello
World
%10s
中10
指定输出字符宽度. 默认是右对齐, 如果在10
中添加减号, 可以使其左对齐.
使用占位符
指定宽度后, 还可以用占位符来填充输出.
示例:
<?php
echo "<pre>";
$number = 543;
printf("%06d\n", $number); //000543
printf("% 6d\n", $number); // 543 (空格也可以是占位符)
printf("%'x6d\n", $number); //xxx543 (除了空格和0以外, 其它占位符前面必须要有一个单引号)
printf("%-06s", $number); //543000
浏览器输出:
000543
543
xxx543
543000
%06d
中 0
是占位符, 6
是输出字符的总数. 如果要输出的数据所占用的字符少于总数, 就会用占位符填充.
参数交换
示例:
<?php
echo "<pre>";
printf("%3\$d %1\$d %2\$d", 12, 13, 14);
输出:
14 12 13
其中 %3\$d
是第三个参数 %1\$d
是第一个参数 %2\$d
是第二个参数, 也就是说 %n\$d
代表第 n 个参数.
sprintf 函数
使用 printf
函数返回的是格式化后字符串的长度, 如果想使用格式化后的字符串, sprintf
函数就有了用武之地.
sprintf ( string $format [, mixed] $...] ) : string
sprintf
函数与 printf
函数 使用方法一样, 只不过 sprintf
函数返回格式化后的字符串, 可以直接赋给变量
示例:
<?php
echo "<pre>";
$num = 56;
$str = sprintf("%-06s", $num);
echo $str; //560000