PHP String vfprintf()函数
The vfprintf()是PHP的内置函数,用于将格式化字符串转换/转换为特定的输出流。在vfprintf()中,参数放置在一个数组中。数组的元素将与主字符串中的百分号(%)一起插入。vfprintf()函数是”逐步”工作的。每个百分号(%)标志都会插入一个元素。
注意:如果百分号(%)标志多于参数,则必须使用占位符。占位符在%标志后插入,并包含参数,如-数字和”$”。
PHP 5以及以上版本都支持此函数。与fprintf()不同,vfprintf()中的参数是放置在数组中的。此函数返回在文件中写入的字符串的长度。
语法
下面给出了vfprintf()的语法,其中所有三个参数在此函数中都是必需的。
vfprintf( stream,format, $argarray)
参数
$stream(必需) - 这是vfprintf()函数的强制参数,用于指定字符串写入的位置。
$format(必需) - 这也是vfprintf()函数的强制参数,用于指定字符串以及如何格式化其中的变量。
可能的格式值:
- %% – 返回一个百分号符号
- %b – 以二进制数表示
- %c – 根据ASCII值显示字符
- %d – 以有符号十进制数表示
- %e – 参数被视为使用小写字母(例如3.2e+2)的科学计数法
- %E – 类似于e说明符,但使用大写字母(例如3.2E+2)
- %u – 无符号十进制数
- %f – 以浮点数表示(符合本地化规则)
- %F – 也表示为浮点数,但不符合本地化规则
- %g – %e和%f中较短的形式
- %G – %E和%F中较短的形式
- %o – 以八进制数表示
- %s – 同时视为表示为字符串
- %x – 以小写字母表示的十六进制数
- %X – 以大写字母表示的十六进制数
附加格式值:
这些值位于%符号和字母之间,例如%.2f
- + = 前缀为正数和负数标志,默认只有负数标志为-
- - = 左对齐给定变量值,默认为右对齐
- ‘ = 用字符填充结果
- (空格) = 用空格填充结果
- 0 = 只使用0填充数字。对于s说明符,它还可以使用0填充右侧
$argarray(必需) - 一个包含要插入格式字符串中%符号处的参数的数组。这是vfprintf()函数的必需参数。
返回值
vfprintf()函数返回写入字符串的长度。
示例
以下是一些示例,以便理解vfprintf()的工作。
示例1
在下面的示例中,我们将以写入模式(“w”)打开一个test.txt文件,以在其中写入一些数据。如果test.txt文件不存在,它将自动在相同的文件夹中创建文件,然后我们可以在其中写入文本。
?php
num1 =71;str = "earth";
file = fopen("test.txt", "w");
echo vfprintf(file, "There is %u percent water on %s", array(num1,str));
fclose($file);
?>
输出:
34
以下文本将被写入test.txt文件中。
There is 71 percent water on earth.
注意:在写模式”w”下,文件中的现有数据将被删除并被新数据覆盖。
示例2
<?php
num1 =512;num2 = -246;
file = fopen("test.txt", "w");
echo vfprintf(file, "%f\n%u ", array(num1,num2));
fclose($file);
?>
输出:
32
以下数据将被写入test.txt文件中。
512.000000
18446744073709551370
示例3
<?php
number1 = 278;file = fopen("test.txt", "w");
echo vfprintf(file, "With 3 decimal: %1\$.3f\n Without decimal: %1\$u", array(number1));
fclose($file);
?>
输出:
45
以下数据将被写入test.txt文件。
With 3 decimal: 278.000
Without decimal: 278