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所示。
注意 字符串中转换符号的顺序和替换其的参数值顺序一致。
下面详细了解一下转换格式。转换格式包括了以下主要内容。
❑填空(补齐)字符,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所示。
共有条评论 网友评论