PHP 格式化字符串

2019-06-22  本文已影响0人  7emini

常用的函数 print, print_fecho (严格的说 echo 是PHP的语言结构, 并不是函数)仅仅是将文本在浏览器上输出, 格式化字符串需要用到函数 printfsprintf .

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     

%10s10指定输出字符宽度. 默认是右对齐, 如果在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

%06d0 是占位符, 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
上一篇下一篇

猜你喜欢

热点阅读