文章教程

5.4格式化字符串

9/17/2020 9:26:54 PM 人评论 次浏览

5.4 格式化字符串

将字符串转换成某种特定的格式,叫做字符串的格式化。比如一本书的价格是39元,一般都会格式化成“39.00”的形式。对字符串进行格式化,是程序开发中经常遇到处理操作之一。PHP语言提供函数sprintf(),将字符串格式化,该函数的语法如下所示。


string sprintf(string$format,mixed$args);


参数$format是要转换的格式,该参数通常以百分号(%)开始,到转换字符为止。例如,%1.2f就是一个转换格式,其中f就是转换字符,它表示将字符串格式化成浮点数。这种用法,对于有C语言基础的读者来说,一定不会陌生。该函数返回格式化后的字符串。下面通过代码5-7了解函数sprintf()的用法。

代码5-7 函数sprintf()的简单应用5-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 ?>


【代码解析】这段程序第2行首先定义了一个含有转换格式的字符串$str,其中%d和%s就是转换格式符号。读者可以将其理解为占位符,这就是说,它们所在的位置,将来会通过函数sprintf()传入的参数替换掉。%d表示将要用一个整数来替换,%s表示将要用一个字符串来替换。接着,第4行语句使用1替换字符串$str中的%d,使用"PHP"替换$str中的%s。代码5-7的执行结果如图5-7所示。

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

注意 字符串中转换符号的顺序和替换其的参数值顺序一致。

下面详细了解一下转换格式。转换格式包括了以下主要内容。

❑填空(补齐)字符,0表示用空格补齐。

❑对齐方式,默认值是右对齐,使用负号是向左对齐。

❑字段宽度。

❑浮点数的精确度,即小数点后的位数。

❑转换类型,如整数、浮点数、字符串等。

主要的转换类型可以参见下表。

代码5-7表现的格式化意义不是很明显,下面通过代码5-8进一步说明格式化字符串的应用。

代码5-8 字符串的格式化5-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 ?>


【代码解析】第2~5行定义了4个不同类型的变量,然后通过第7~21行使用不同形式的格式化类型进行变量的输出。代码5-8的执行结果如图5-8所示。

图 5-8 字符串的格式化

教程类别