채택완료

PHP 윈도우에서 csv 파일 맨 끝 100개만 읽을려면?

안녕하세요

윈도우 10 pro, Apache 2.4 Web Server, PHP 8 환경입니다.

linux 에서는 tail 명령으로

$contents = exec("tail -100 ./20230424.csv"); 형식으로

csv 파일 뒤에서 잘라서 작업이 가능하던데

윈도우에서 csv의 마지막 100개 줄을 array 형태로 변수 저장하는 방법이 어떻게 될까요?

|

답변 2개

채택된 답변
+20 포인트
Copy
<?php
function file_of_last_n_line($filepath, $linenum) {
    $t = null;
    $offset = -1;
    $line = 0;
    $content = '';
    $contents = [];

 

    $fp = fopen($filepath, 'r');

 

    while ($line < $linenum) {
        $isseek = fseek($fp, $offset, SEEK_END);

        $t = fgetc($fp);


        if ($t == "\n" || $isseek == -1) {
            $line++;
            $content = strrev($content);
            array_unshift($contents, $content);
            $content = '';
        } else {
            $content .= $t;
        }
        $offset--;

 

        if ($isseek == -1) {
            break;
        }
    }

 

    fclose($fp);

 

    return $contents;
}


$contents = file_of_last_n_line('f.txt', 100);
print_r($contents);
?>

답변을 작성하려면 로그인이 필요합니다.