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