PHP | fscanf 函數

怎樣讀取格式化文件

最近更新時間 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
rss_feed