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 字符串的格式化