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