PHP中 sprintf()格式化输出详解

来源:互联网 发布:东华软件薛向东 编辑:程序博客网 时间:2024/05/17 04:20

一、定义和用法

sprintf()函数把格式化的字符串写入变量中。

arg1、arg2、++参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个%符号处,插入arg1,在第二个%符号处,插入arg2,以此类推。

注释:如果%符号多于arg参数,则您必须使用占位符。占位符位于%符号之后,由数字和“\$”组成。

实例:

<?php
$number = 2;
$str = "Shanghai";
$txt = sprintf("There are %u million cars in %s.",$number,$str);
echo $txt;
?>
运行结果为:There are 2 million cars in Shanghai.

语法

sprintf(format,arg1,arg2,arg++)

参数描述format必需。规定字符串以及如何格式化其中的变量。
可能的格式值:
%% 返回一个百分号%
%b  二进制数
%c  ASCII值对应的字符
%d  包含正负号的十进制数(负数、0、正数)
%e  使用小写的科学计数法(例如:1.2e+2)
%E  使用大写的科学计数法(例如:1.2E+2)
%u  不包含正负号的十进制数(大于等于0)
%f   浮点数(本地设置)
%F  浮点数(非本地设置)
%g  较短的%e和%f
%G 较短的%E和%f
%O  八进制数
%s   字符串
%x  十六进制数(小写字母)
%X  十六进制数(大写字母)

附加的格式值。必需放置在%和字母 之间(例如%.2f):

+(在数字前面加上+或-来定义数字的正负性。默认情况下,
只有负数才做标记,正数不做标记)
‘(规定使用什么作为填充,默认是空格。它必需与宽度指定器
一起使用。例如:%‘x20s(使用“x作为填充”))
-(左调整变量值)
[0-9](规定变量值的最小宽度)
.[0-9](规定小数位数或最大字符串长度)

注释:如果使用多个上述的格式值,它们必需按照以上的顺序使用。arg1必需。规定插到format字符串中第一个%符号处的参数。arg2可选。规定插到format字符串中第二个%符号处的参数。arg++可选。规定插到format字符串中第三、四等%符号处的参数。





































技术细节:

返回值:返回已格式化的字符串

二、更多实例

1.使用格式值%f:

<?php

$number = 123;

$txt = sprintf("%f",$number);

echo $txt;

?>


 运行结果为:123.000000


2.使用占用符:

<?php

$number = 123;

$txt = sprintf("带两位小数:%\$.2f<br>不带小数:%1\$u",$number);

echo $txt;

?>


运行结果为:带有两位小数:123.00

                     不带小数:123


3.对所有可能的格式值的演示


<?php

$num1 = 123456789;

$num2 = -123456789;

$char = 50;       //ASCII字符50是2


//注释:格式值“%%”返回百分号

echo sprintf("%%b = %b",$num1)."<br>";  //二进制数                                结果:%b = 111010110111100110100010101


echo sprintf("%%c = %c",$char)."<br>";  //ASCII字符                                结果:%c = 2


echo sprintf("%%d = %d",$num1)."<br>";  //带符号的十进制数                  结果:%d = 123456789


echo sprintf("%%d = %d",$num2)."<br>";  //带符号的十进制数                  结果:%d = -123456789


echo sprintf("%%e = %e",$num1)."<br>";  //科学计数法(小写)               结果:%e = 1.234568e+8


echo sprintf("%%E = %E",$num1)."<br>";//科学计数法(大写)                结果:%E = 1.234568E+8


echo sprintf("%%u = %u",$num1)."<br>";//不带符号的十进制数(正)      结果:%u = 123456789


echo sprintf("%%u = %u",$num2)."<br>";//不带符号的十进制数(负)      结果:%u = 4171510507


    echo sprintf("%%f = %f",$num1)."<br>";//浮点数(视本地设置)              结果:%f = 123456789.000000

            echo sprintf("%%F = %F",$num1)."<br>";//浮点数(不视本地设置)         结果:%F = 123456789.000000

            echo sprintf("%%g = %g",$num1)."<br>";//短于%e 和%f                            结果:%g = 1.23457e+8

            echo sprintf("%%G = %G",$num1)."<br>";//短于%E和%f                           结果:%G = 1.23457E+8

            echo sprintf("%%o = %o",$num1)."<br>";//八进制数                                   结果:%o = 726746425

            echo sprintf("%%s = %s",$num1)."<br>";//字符串                                       结果:%s = 123456789

            echo sprintf("%%x = %x",$num1)."<br>";//十六进制(小写)                     结果:%x = 75bcd15

            echo sprintf("%%X = %x",$num1)."<br>";//十六进制(大写)                    结果:%X = 75BCD15

            echo sprintf("%%+d = %+d",$num1)."<br>";//符号说明符(正)                结果:%+d = +123456789

            echo sprintf("%%+d = %+d",$num2)."<br>";//符号说明符(负)                结果:%+d = -123456789

?>


4.对字符串说明符的演示
<?php

$str1 = "Hello";

$str2 = "Hello world";


echo sprintf("[%s]",$str1."<br>");

echo sprintf("[%8s]",$str1."<br>");

echo sprintf("[%-8s]",$str1."<br>");

echo sprintf("[%08s]",$str1."<br>");

echo sprintf("[%'*8s]",$str1."<br>");

echo sprintf("[%8.8s]",$str2."<br>");

?>

运行结果为:[Hello]
                      [ Hello]
                      [Hello ]
                      [000Hello]
                      [***Hello]
                      [Hello wo]


























此文章转载自:http://www.w3school.com.cn/php/func_string_sprintf.asp