文章教程

6.4格式化字符串

9/17/2020 9:31:19 PM 人评论 次浏览

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

教程类别