PHP 字符串函数

PHP vfprintf() 函数用于将格式化的字符串转换为特定的输出流。在 vfprintf() 中,参数被放置在一个数组中。数组的元素将与主字符串中的百分号 (%) 一起插入, 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

  • + = 前缀 + 和 - 符号,默认情况下只有负数用 -ive 符号标记。
  • - = 左对齐在给定的变量值内,默认为右对齐。
  • ' = 用字符填充结果。
  • (space) = 用空格填充结果。
  • 0 = 仅用零填充数字。使用 s 说明符,它还可以右填充零。
必须
argarray 将在 % 符号处插入带参数的数组在格式字符串中。它是 vfprintf() 函数的必传参数。
必须

返回值

vfprintf()函数返回写入字符串的长度。

注意

如果 % 符号多于参数,那么我们必须使用占位符。在 % 符号之后插入一个占位符,并包含 - 数字和"$"等参数。

PHP 5 和 以上 版本支持该函数。与 fprintf() 不同,vfprintf() 中的参数放置在数组中。该函数返回写入文件的字符串的长度。

示例

下面一些给出例子来理解vfprintf()的使用方法。

示例1

在下面的例子中,我们将在write中打开一个test.txt文件模式("w")在其中写入一些数据。如果 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

测试中会写入以下数据.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