PHP sprintf()
函数用于格式化字符串并保存到一个变量。
sprintf() 函数类似于 printf() 函数,但两者的唯一区别是 sprintf() 函数需要借助echo将内容输出到浏览器,而 printf() 函数可以直接在浏览器输出格式化为文本内容。
语法
语法如下:
sprintf(format, agr1, agr2, arg3...) : string
这里的arg1、arg2、arg3等是sprintf()的参数。这些参数将插入带有百分比 (%) 符号的主字符串中。在每个 % 符号处,参数将一个接一个地插入替换。
参数
参数 | 描述 |
---|---|
format | 必需。规定字符串以及如何格式化其中的变量。 可能的格式值:
附加的格式值。必需放置在 % 和字母之间(例如 %.2f):
注释:如果使用多个上述的格式值,它们必须按照以上顺序使用。 |
arg1 | 必需。规定插到format字符串中第一个 % 符号处的参数。 |
arg2 | 可选。规定插到format字符串中第二个 % 符号处的参数。 |
arg++ | 可选。规定插到format字符串中第三、四等 % 符号处的参数。 |
返回值
返回格式化字符串。
注意
sprintf() 需要使用echo输出到浏览器。 sprintf()函数返回的格式化字符串在浏览器上通过echo打印出来,而printf()函数可以直接输出格式化的结果到浏览器。
支持的版本
PHP 4及以上版本支持此功能。
示例
下面给出一些示例学习 sprintf() 函数的使用方法。
示例1
简单示例,没有百分号。
<?php
$format = 'this is a simple example';
$res = sprintf($format);
echo $res;
?>
输出:
示例2
变量声明
<?php
$quantity = 1;
$language = 'sprintf';
$format = 'This is the %dst example of the %s function.';
$res = sprintf($format, $quantity, $language);
echo $res;
echo '</br>';
echo sprintf("this function works with echo.");
?>
输出:
this function works with echo.
示例3
参数顺序问题,%号的位置一般要与参数一一对应。
<?php
$num = 54;
$course = 'PHP training';
$year = 2022;
$format = 'There are %d students in %s batch in the %d year.';
echo $res = sprintf($format, $num, $course, $year);
?>
输出:
在这里,如果我们在格式字符串中交换占位符的顺序,那输出结果就语义不通顺了。让我们看看下面的代码。
<?php
$num = 54; $year = 2022;
$course = 'PHP training';
$format = 'There are %d students in %s batch in the %d year';
echo $res = sprintf($format, $course, $num, $year);
?>
输出:
所以,如果我们想保留代码原样并想正确指出哪个占位符引用的参数,意思是占位符绑定参数顺序,然后修改代码如下:
<?php
$num = 54;
$course = 'PHP training';
$year = 2022;
$format = 'There are %2$d students in %1$s batch in the %3$d year';
echo $res = sprintf($format, $course, $num, $year);
?>
输出:
现在,输出与原始输出相同。
注意:在这种情况下,我们需要定义参数的位置来打印代码的正确输出。
示例4
指定填充字符
<?php
echo sprintf("%'.8d\n",1234);
echo '</br>';
echo sprintf("%'.08d\n",1234);
?>
输出:
现在,上面的填充字符代码的输出将是
00001234
示例5
指定填充字符
<?php
$snum = 3259461827;
echo sprintf("%.2e", $snum);
echo '</br>';
echo sprintf("%'*6s\n", "Hi");
echo '</br>';
echo sprintf("%'*-6s\n", "Hi");
echo '</br>';
$fnum = 125.235;
echo sprintf("%f\n", $fnum);
echo '</br>';
echo sprintf("%.2f\n", $fnum);
echo '</br>';
echo sprintf("%.0f\n", $fnum);
echo '</br>';
echo sprintf("%.8f\n", $fnum);
?>
输出:
现在,上面代码的输出对于填充字符将输出:
****Hi
Hi****
125.235000
125.23
125
125.23500000
sprintf() 和 printf() 函数的区别
sprintf() 和 printf() 函数之间的区别是 sprintf( ) 函数需要echo输出文本内容,而 printf() 函数不需要 echo 来显示文本。通过下面的例子了解它们的区别。
示例
<?php
$str1 = 'We tried to printed on the browser directly using sprint() function.';
sprintf($str1);
$format = 'This string is print on the browser with the help of echo function.';
$str2 = sprintf($format);
echo $str2;
?>
输出:
在这里,我们可以看到变量$str1存储的文本并没有被sprintf()函数直接打印到浏览器上,所以我们使用echo来显示str2变量存储的字符串。
现在,让我们看看printf的函数。
<?php
$str1 = 'This string is printed on the browser directly on the browser without using echo.';
printf($str1);
?>
输出: