一、定义和用法
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
?>
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