如果您使用命令行界面 (CLI SAPI),您可能对以下三个标准输入/输出流 (STDIN、STDOUT 和 STDERR) 感兴趣:https://php.net/manual/en/features.commandline.io-streams.php
(PHP 5, PHP 7, PHP 8)
fprintf — 将格式化字符串写入流
stream
format
格式字符串由零个或多个指令组成:直接复制到结果中的普通字符(不包括%
)和*转换说明符*,每个转换说明符都会获取它自己的参数。
转换说明符遵循此原型:%[argnum$][flags][width][.precision]specifier
。
后跟美元符号$
的整数,用于指定转换中要处理的哪个编号参数。
标志 | 描述 |
---|---|
- |
在给定的字段宽度内左对齐;右对齐为默认值 |
+ |
在正数前面加上加号+ ;默认情况下,只有负数前面带有负号。 |
(空格) |
用空格填充结果。这是默认值。 |
0 |
仅用零填充数字的左侧。对于s 说明符,这也可以用零填充右侧。 |
' (字符) |
用字符 (char) 填充结果。 |
一个整数,表示此转换应产生的字符数(最小值),或者*
。如果使用*
,则宽度作为附加的整数值提供,该值位于由说明符格式化的值之前。
一个句点.
,后面可以选择跟一个整数或*
,其含义取决于说明符
e
、E
、f
和F
说明符:这是要在小数点后打印的位数(默认为6)。
g
、G
、h
和H
说明符:这是要打印的有效数字的最大数量。
s
说明符:它充当截止点,为字符串设置最大字符限制。
注意:如果指定了句点但没有为精度指定显式值,则假定为0。如果使用
*
,则精度作为附加的整数值提供,该值位于由说明符格式化的值之前。
说明符 | 描述 |
---|---|
% |
一个字面百分号字符。不需要参数。 |
b |
参数被视为整数,并作为二进制数显示。 |
c |
参数被视为整数,并作为具有该ASCII码的字符显示。 |
d |
参数被视为整数,并作为(带符号的)十进制数显示。 |
e |
参数被视为科学计数法(例如1.2e+2)。 |
E |
与e 说明符类似,但使用大写字母(例如1.2E+2)。 |
f |
参数被视为浮点数,并作为浮点数显示(考虑区域设置)。 |
F |
参数被视为浮点数,并作为浮点数显示(不考虑区域设置)。 |
g |
通用格式。 令P等于精度(如果非零),如果省略精度则为6,如果精度为零则为1。然后,如果使用E样式的转换具有X的指数 如果P > X ≥ −4,则转换使用f样式和精度P − (X + 1)。否则,转换使用e样式和精度P − 1。 |
G |
与g 说明符类似,但使用E 和f 。 |
h |
与g 说明符类似,但使用F 。从PHP 8.0.0开始可用。 |
H |
与g 说明符类似,但使用E 和F 。从PHP 8.0.0开始可用。 |
o |
参数被视为整数,并作为八进制数显示。 |
s |
参数被视为字符串并显示为字符串。 |
u |
参数被视为整数,并作为无符号十进制数显示。 |
x |
参数被视为整数,并作为十六进制数显示(使用小写字母)。 |
X |
参数被视为整数,并作为十六进制数显示(使用大写字母)。 |
c
类型说明符忽略填充和宽度。
尝试将字符串和宽度说明符组合起来使用需要多个字节才能表示一个字符的字符集可能会导致意外的结果。
变量将被强制转换为适合说明符的类型
类型 | Specifiers |
---|---|
字符串 | s |
整数 |
d 、u 、c 、o 、x 、X 、b |
浮点数 |
e 、E 、f 、F 、g 、G 、h 、H |
values
返回写入的字符串长度。
从PHP 8.0.0开始,如果参数数量为零,则会抛出ValueError异常。在PHP 8.0.0之前,会发出E_WARNING
警告。
从PHP 8.0.0开始,如果[width]
小于零或大于PHP_INT_MAX
,则会抛出ValueError异常。在PHP 8.0.0之前,会发出E_WARNING
警告。
从PHP 8.0.0开始,如果[precision]
小于零或大于PHP_INT_MAX
,则会抛出ValueError异常。在PHP 8.0.0之前,会发出E_WARNING
警告。
从PHP 8.0.0开始,如果提供的参数少于所需参数,则会抛出ArgumentCountError异常。在PHP 8.0.0之前,会返回false
并发出E_WARNING
警告。
版本 | 描述 |
---|---|
8.0.0 | 此函数不再在失败时返回false 。 |
8.0.0 | 如果参数数量为零,则抛出ValueError异常;之前此函数会发出E_WARNING 警告。 |
8.0.0 | 如果[width] 小于零或大于PHP_INT_MAX ,则抛出ValueError异常;之前此函数会发出E_WARNING 警告。 |
8.0.0 | 如果[precision] 小于零或大于PHP_INT_MAX ,则抛出ValueError异常;之前此函数会发出E_WARNING 警告。 |
8.0.0 | 如果提供的参数少于所需参数,则抛出ArgumentCountError异常;之前此函数会发出E_WARNING 警告。 |
示例 #1 fprintf():零填充整数
<?php
if (!($fp = fopen('date.txt', 'w'))) {
return;
}
fprintf($fp, "%04d-%02d-%02d", $year, $month, $day);
// 将格式化的 ISO 日期写入 date.txt 文件
?>
示例 #2 fprintf(): 格式化货币
<?php
if (!($fp = fopen('currency.txt', 'w'))) {
return;
}
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money 将输出 "123.1";
$len = fprintf($fp, '%01.2f', $money);
// 将 "123.10" 写入 currency.txt 文件
echo "已写入 $len 字节到 currency.txt 文件";
// 使用 fprintf 的返回值来确定我们写入了多少字节
?>
如果您使用命令行界面 (CLI SAPI),您可能对以下三个标准输入/输出流 (STDIN、STDOUT 和 STDERR) 感兴趣:https://php.net/manual/en/features.commandline.io-streams.php