sprintf() 是 PHP 的内置函数,可将格式化的字符串写入变量。它返回一个格式化的字符串。 PHP 4 及以上版本支持 sprintf() 函数。
sprintf() 函数与 printf() 函数类似,但两者的唯一区别是 sprint() 将输出保存为字符串,而不是像 printf() 函数那样在浏览器上显示格式化消息。
注意:sprintf() 与回声一起工作。 sprintf() 函数返回的格式化字符串在浏览器上通过 echo 打印,而 printf() 直接将输出放在浏览器上。
用法
sprintf() 的语法如下:
sprintf (format, agr1, agr2, arg3...):string
这里arg1、arg2、arg3等是sprintf()的参数。这些参数将插入带有百分比 (%) 符号的主字符串中。在每个 % 符号处,参数将插入 one-by-one。
参数
format (mandatory)
此参数是强制性参数,用于指定字符串并描述如何格式化其中的变量。在这种情况下,只有不包括 % 的简单字符会被直接复制到结果字符串中,但带有 % 符号的字符会获取自己的参数。可能的格式值为:
说明符
参数 | 描述 |
---|---|
%% | 它返回一个百分号 (%)。 |
%b | 参数显示为二进制数。 |
%C | 该参数被视为整数并表示为具有该 ASCII 的字符。 |
%d | 该参数被视为正整数并表示为十进制数。 |
%e | 小写的科学记数法,例如 1.2e+2。精度说明符指定要打印的小数点后的位数。 |
%E | 类似于 e 说明符,但使用大写的科学记数法,例如 1.2E+2。 |
%u | 该参数被视为整数并表示为无符号整数。 |
%F | 浮点数(语言环境感知) |
%F | 浮点数(非语言环境感知) |
%g | 这是一种通用格式。 |
%G | 类似于 g 说明符,但它使用 E 和 F。 |
%o | 表示为八进制数。 |
%s | 该参数被视为以及作为字符串呈现。 |
%X | 它表示为带有小写字母的十六进制数。 |
%X | 它也表示为十六进制数字,但使用大写字母。 |
注意:c 类型说明符忽略宽度和填充。
类型处理
类型 | 说明符 |
---|---|
string | s |
integer | d, u, c, o, x, X, b |
double | G, g, E, e, F, f |
还存在一些附加的格式值,它们位于百分号 (%) 和字母之间。 (例如:%.2f)
下面列出了这些附加格式值:
旗帜
旗帜 | 描述 |
---|---|
-- | 给定字段内的 Left-justify 和右对齐默认为 |
+ | 在数字前面加上前缀 +ive 和 -ive 符号。默认情况下,负号仅放置在负数之前。 |
(空间) | 它是默认值,并用空格填充结果。 |
0 | 只有 left-pads 编号为零和 s 说明符它也可以 right-pads 零。 |
'(字符) | 它用字符填充结果。 |
价值回报
sprint() 函数返回格式化的字符串。
支持版本
PHP 4 及以上版本支持此函数。
例子
下面给出一些例子来学习sprintf()函数的实际实现。
范例1:简单示例
<?php
$format = 'It is the basic example of PHP String function.';
$res = sprintf($format,);
echo $res;
?>
输出:
It is the basic example of PHP String function.
范例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 is the 1st example of the sprintf function. This function works with echo.
范例3:参数交换
让我们看完整的例子 3 来理解参数交换的概念。
<?php
$num = 54;
$course = 'PHP training';
$year = 2018;
$format = 'There are %d students in %s batch in the %d year.';
echo $res = sprintf($format, $num, $course, $year);
?>
输出:
There are 54 students in PHP training batch in the 2018 year.
在这里,如果我们在格式字符串中交换占位符的顺序,那么它会给我们带来问题。它与代码中的参数顺序不匹配。因此,占位符与参数的顺序不匹配。让我们看看下面的代码——
<?php
$num = 54;
$course = 'PHP training';
$format = 'There are %d students in %s batch in the %d year';
echo $res = sprintf($format, $course, $num, $year);
?>
输出:
There are 0 students in 54 batch in the 2018 year
因此,如果我们想保留代码原样并希望正确指示占位符引用的参数,则将其写成下面给定的代码-
<?php
$num = 54;
$course = 'PHP training';
$year = 2018;
$format = 'There are %2$d students in %1$s batch in the %3$d year';
echo $res = sprintf($format, $course, $num, $year);
?>
输出:
现在,输出与原始输出相同。
There are 54 students in PHP training batch in the 2018 year
注意:在这种情况下,我们需要定义参数的位置以打印正确的代码输出。
范例4:指定填充字符
<?php
echo sprintf("%'.8d\n",1234);
echo '</br>';
echo sprintf("%'.08d\n",1234);
?>
输出:
现在,上述填充字符代码的输出将类似于-
....1234 00001234
范例5:指定填充字符
<?php
$snum = 3259461827;
echo sprintf("%.2e", $snum); //Display scientific value 3.26e+9
echo '</br>';
echo sprintf("%'*6s\n", "Hi"); //Display ****Hi (It displays 6 character including asterisk (*) before the text.)
echo '</br>';
echo sprintf("%'*-6s\n", "Hi"); //Display Hi**** (It displays 6 character including asterisk (*) after the text.)
echo '</br>';
$fnum = 125.235;
echo sprintf("%f\n", $fnum); //Display 125.235000
echo '</br>';
echo sprintf("%.2f\n", $fnum); //Display 125.23 (It displays only 2 digits after decimal point.)
echo '</br>';
echo sprintf("%.0f\n", $fnum); //Display 125 only (It does not display the digits after decimal point.)
echo '</br>';
echo sprintf("%.8f\n", $fnum); //Display 125.23500000 (It displays 8 digits after decimal point including 0.)
?>
输出:
现在,上述填充字符代码的输出将类似于-
3.26e+9 ****Hi Hi**** 125.235000 125.23 125 125.23500000
PHP中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);
?>
输出:
相关用法
- PHP String substr()用法及代码示例
- PHP String strtr()用法及代码示例
- PHP String strtolower()用法及代码示例
- PHP String strspn()用法及代码示例
- PHP String substr_count()用法及代码示例
- PHP String strtoupper()用法及代码示例
- PHP String strtok()用法及代码示例
- PHP String substr_replace()用法及代码示例
- PHP String strstr()用法及代码示例
- PHP String str_replace()用法及代码示例
- PHP String sscanf()用法及代码示例
- PHP String substr_compare()用法及代码示例
- PHP String strrpos()用法及代码示例
- PHP String wordwrap()用法及代码示例
- PHP String ucwords()用法及代码示例
- PHP String localeconv()用法及代码示例
- PHP String quoted_printable_encode()用法及代码示例
- PHP String ucfirst()用法及代码示例
- PHP String nl2br()用法及代码示例
- PHP String vsprintf()用法及代码示例
注:本文由纯净天空筛选整理自 PHP String sprintf() function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。