6.4格式化字符串
6.4 格式化字符串
将字符串转换成某种特定的格式叫做字符串的格式化。比如一本书的价格是39元,一般都会格式化成“39.00”的形式。对字符串进行格式化,是程序开发中经常遇到的处理操作之一。PHP语言提供了函数sprintf()将字符串格式化,该函数的语法如下。
string sprintf(string $format, mixed $args);
参数$format是要转换的格式,该参数通常以百分号(%)开始,到转换字符为止。例如,%1.2f就是一个转换格式,其中f就是转换字符,它表示将字符串格式化成浮点数。这种用法对于有C语言基础的读者来说一定不会陌生,该函数返回格式化后的字符串。下面通过代码6-7了解函数sprintf()的用法。
代码6-7函 数sprintf()的简单应用6-7.php
01 <?php
02 $str = "
我有%d
本%s
方面的编程书籍。"; //
定义字符串变量$str
03
04 $str1 = sprintf($str,1,"PHP"); //
定义字符串变量$str1
05 echo $str1;
06
07 echo "<br/>";
08 echo "<br/>";
09
10 $num = 4;
11 $lang = "C++";
12
13 $str2 = sprintf($str,$num,$lang); //
格式化字符串输出
14 echo $str2;
15 ?>
【代码解析】代码第02行首先定义了一个含有转换格式的字符串$str,其中%d和%s就是转换格式符号。读者可以将其理解为占位符,这就是说,它们所在的位置,将来会通过函数sprintf()传入的参数替换掉。%d表示将要用一个整数来替换,%s表示将要用一个字符串来替换。接着,第4行语句使用1替换字符串$str中的%d,使用“PHP”替换$str中的%s。代码6-7的执行结果如图6-7所示。
注意 字符串中转换符号的顺序和替换其的参数值顺序一致。
下面详细了解一下转换格式。转换格式包括了以下主要内容。
·填空(补齐)字符,0表示用空格补齐。
·对齐方式,默认值是右对齐,使用负号是向左对齐。
·字段宽度。
·浮点数的精确度,即小数点后的位数。
·转换类型,如整数、浮点数、字符串等。
格式化的主要类型如表6-1所示。
表6-1 格式化的主要类型

代码6-7表现的格式化意义不是很明显,下面通过代码6-8进一步说明格式化字符串的应用。
代码6-8字 符串的格式化6-8.php
01 <?php
02 $num = 123;
03 $long = 753159852;
04 $float = 0.45;
05 $str = "banana";
06
07 printf("%%d = %d<br/>",$num); //
输出整数
08 printf("%%b = %b<br/>",$num); //
输出二级制
09 printf("%%e = %e<br/>",$long); //
输出科学计数法的数字
10 printf("%%f = %f<br/>",$num); //
输出浮点数
11 printf("%%f = %01.2f<br/>",$num); //
输出两位小数的浮点数
12 printf("%%f = %03.5f<br/>",$float); //
输出5
位小数的浮点数
13 printf("%%f = %08.4f<br/>",$float); //
输出4
位小数的浮点数
14
15 echo "<br/>";
16
17 printf("[%s]<br/>",$str); //
输出字符串
18 printf("[%8s]<br/>",$str); //
输出8
位宽度的字符串
19 printf("[%-8s]<br/>",$str); //
输出8
位宽度的字符串,左对齐
20 printf("[%08s]<br/>",$str); //
输出字符串,宽度不够时用0
补齐
21 printf("[%"$8s]<br/>",$str); //
输出字符串,宽度不够时用$
补齐
22 ?>
【代码解析】代码第02~05行定义了4个不同类型的变量,然后通过第07~21行使用不同形式的格式化类型进行变量的输出。代码6-8的执行结果如图6-8所示。

图6-7 sprintf()的简单应用

图6-8 字符串的格式化
上一篇:6.3输出打印字符串
下一篇:6.5获取字符串中的一个子串
