PHP | fscanf 函数
Lasted 2021-01-18 15:43:48
fscanf 函数读取格式化数据。
fscanf() 函数和 sscanf() 相似,但是它从与 handle 关联的文件中接受输入并根据指定的 format。格式字符串中的任何空白会与输入流中的任何空白匹配。这意味着甚至格式字符串中的制表符 \t 也会与输入流中的一个空格字符匹配。每次调用 fscanf() 都会从文件中读取一行。
函数定义
fscanf ( resource $handle , string $format , mixed &$... = ? ) : mixed
// 源文件位于:ext/standard/file.c
# 函数定义
PHP_FUNCTION(fscanf)
{
...
buf = php_stream_get_line((php_stream *) what, NULL, 0, &len);
if (buf == NULL) {
RETURN_FALSE;
}
result = php_sscanf_internal(buf, format, argc, args, 0, return_value);
efree(buf);
if (SCAN_ERROR_WRONG_PARAM_COUNT == result) {
WRONG_PARAM_COUNT;
}
}
参数
- checkhandle - 文件指针。
- checkformat - 格式字符串。参见:sprintf() 函数。
返回值
- checkmixed - 如果只给此函数传递了两个参数,解析后的值会被作为数组返回。否则,如果提供了可选参数,此函数将返回被赋值的数目。可选参数必须用引用传递。。
示例1: - 使用 fscanf() 函数读取文件。
<?php
/**
* PHP fscanf() 函数读取文件。
*
* @since Version 1.0.0
* @filesource
*/
// 打开文件
$fileName = 'foo.txt';
$handle = fopen($fileName, 'r');
// cron file 格式串
// $format = "%s %s %s %s %s %[^\n]s";
// 使用 fscanf 函数读取文件
while($line = fscanf($handle, "%s\t%s\n")) {
list($name, $location) = $line;
//...
echo $location.PHP_EOL;
}
// 关闭文件
fclose($handle);
zh jp en