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 文件系统函数。