PHP fscanf 函数
最后修改于 2025 年 4 月 3 日
PHP fscanf 函数从文件中读取格式化输入。它类似于 scanf,但使用文件资源而不是标准输入。
基本定义
fscanf 函数根据格式解析文件中的输入。它需要一个文件句柄和格式字符串作为必需参数。
语法:fscanf(resource $handle, string $format, mixed &...$vars): mixed。该函数返回已分配值的数量,如果失败则返回 false。
基本的 fscanf 示例
这展示了使用 fscanf 读取单个值的最简单用法。
basic_fscanf.php
<?php
declare(strict_types=1);
$file = fopen("data.txt", "r");
if ($file === false) {
die("Error opening file");
}
$count = fscanf($file, "%d");
fclose($file);
echo "Read value: " . $count[0];
这从 "data.txt" 中读取一个整数。格式说明符 "%d" 匹配一个十进制整数。结果以数组形式返回。
读取多个值
fscanf 可以使用格式字符串一次读取多个值。
multi_value.php
<?php
declare(strict_types=1);
$file = fopen("user.txt", "r");
if ($file === false) {
die("Error opening file");
}
$result = fscanf($file, "%s %d %f");
fclose($file);
[$name, $age, $score] = $result;
echo "Name: $name, Age: $age, Score: $score";
这从文件中读取一个字符串、一个整数和一个浮点数。使用数组解构将值分配给变量,以便代码更清晰。
使用变量引用
fscanf 可以分配给变量,而不是返回数组。
variable_references.php
<?php
declare(strict_types=1);
$file = fopen("product.txt", "r");
if ($file === false) {
die("Error opening file");
}
$id = 0;
$name = "";
$price = 0.0;
$count = fscanf($file, "%d %s %f", $id, $name, $price);
fclose($file);
echo "Read $count values: ID $id, $name, \$$price";
在这里,我们通过引用传递变量,以直接接收解析后的值。该函数返回成功分配值的计数。
复杂的格式字符串
fscanf 支持带有文字字符的复杂格式字符串。
complex_format.php
<?php
declare(strict_types=1);
$file = fopen("log.txt", "r");
if ($file === false) {
die("Error opening file");
}
$date = "";
$time = "";
$message = "";
fscanf($file, "[%10s %8s] %[^\n]", $date, $time, $message);
fclose($file);
echo "On $date at $time: $message";
这解析具有特定格式的日志文件条目。"%[^\n]" 说明符匹配所有字符,直到换行符。文字括号是格式的一部分。
读取到 EOF
我们可以在循环中使用 fscanf 来处理文件中的所有数据。
read_until_eof.php
<?php
declare(strict_types=1);
$file = fopen("numbers.txt", "r");
if ($file === false) {
die("Error opening file");
}
$sum = 0;
while (fscanf($file, "%d", $number) === 1) {
$sum += $number;
}
fclose($file);
echo "Sum of numbers: $sum";
这从文件中读取整数,直到 EOF。只要 fscanf 成功读取每行一个值,循环就会继续。
最佳实践
- 错误处理: 始终检查文件是否成功打开。
- 资源管理: 使用
fclose关闭文件。 - 类型安全: 使用 strict_types 实现可预测的行为。
- 格式验证: 验证输入是否与预期格式匹配。
来源
本教程涵盖了 PHP fscanf 函数,并提供了实际示例,展示了它在格式化文件输入中的用法。
作者
列出 所有 PHP 文件系统函数。