현재 위치: > 최신 기사 목록> FTP_Rawlist 결과에서 파일 크기 및 시간을 추출하는 방법

FTP_Rawlist 결과에서 파일 크기 및 시간을 추출하는 방법

gitbox 2025-05-26

PHP를 사용하여 FTP 프로토콜을 통해 원격 서버를 작동 할 때 FTP_Rawlist ()는 UNIX 시스템의 LS -L 명령과 유사한 출력을 반환 할 수있는 일반적인 기능입니다. 이러한 원시 출력은 완전한 파일 목록 정보를 제공하지만 형식은 일반 텍스트 문자열이므로 파일 크기 및 수정 시간과 같은 특정 정보를 추출하려면 일부 추가 처리가 필요합니다.

이 기사에서는 ftp_rawlist () 의 출력을 구문 분석하여 각 파일의 크기 및 마지막 수정 시간을 추출하는 방법을 소개하며 샘플 코드가 제공됩니다.

FTP_Rawlist의 출력 형식을 이해하십시오

ftp_rawlist () 는 문자열 배열을 반환합니다. 각 요소는 다음과 같이 형식으로 파일 또는 디렉토리에 대한 정보를 나타냅니다.

 -rw-r--r--   1 user group     1048576 May 21 13:37 filename.zip
drwxr-xr-x   2 user group         512 May 20 10:15 subdir

각 줄은 파일 유형, 권한, 링크 수, 소유자, 그룹, 크기, 수정 날짜 및 시간 및 파일 이름을 포함하는 공간 구분 문자열입니다.

정규 표현식을 사용하여 콘텐츠를 구문 분석합니다

파일 크기 및 수정 시간을 추출하려면이 필드를 일반 표현식으로 구문 분석 할 수 있습니다.

 <?php
// 연결하다 FTP
$ftp = ftp_connect("gitbox.net");
ftp_login($ftp, "username", "password");

// 디렉토리 목록을 가져옵니다
$rawList = ftp_rawlist($ftp, ".");

// 반복하고 각 줄을 구문 분석하십시오
foreach ($rawList as $line) {
    if (preg_match('/^([\-ld])([rwx\-]{9})\s+\d+\s+\S+\s+\S+\s+(\d+)\s+([A-Za-z]{3})\s+(\d{1,2})\s+(\d{2}:\d{2}|\d{4})\s+(.*)$/', $line, $matches)) {
        $type = $matches[1];
        $size = $matches[3];
        $month = $matches[4];
        $day = $matches[5];
        $timeOrYear = $matches[6];
        $name = $matches[7];

        // 수정 된 시간을 타임 스탬프로 변환하십시오
        $currentYear = date("Y");
        $fileTimeStr = "$month $day $timeOrYear";

        if (strpos($timeOrYear, ':') !== false) {
            // 그것은 하루의 시간을 의미합니다,올해는 현재 연도입니다
            $fileTimeStr .= " $currentYear";
            $timestamp = strtotime($fileTimeStr);
        } else {
            // 시간은 해입니다
            $timestamp = strtotime("$month $day $timeOrYear");
        }

        echo "문서: $name\n";
        echo "유형: " . ($type === 'd' ? '목차' : '문서') . "\n";
        echo "크기: $size 바이트\n";
        echo "수정 시간: " . date("Y-m-d H:i:s", $timestamp) . "\n";
        echo "-----------------------------\n";
    }
}
ftp_close($ftp);
?>

주목해야 할 것

  • ftp_rawlist () 의 형식은 원격 서버의 운영 체제 유형에 따라 다르며 위 규칙은 Unix 스타일 목록 결과를 대상으로합니다. 서버가 Windows FTP를 사용하는 경우 출력 형식은 완전히 다르며 실제 상황에 따라 조정해야합니다.

  • 구문 분석 프로세스 중에 항상 일치하지 않는 형식으로 인한 문제를 방지하기 위해 항상 정기적 인 일치 오류 처리를 수행하는 것이 좋습니다.

  • 시간대에 걸쳐 서버의 경우 strtotime () 변환의 결과에 오류가 발생할 수 있습니다. DateTime 클래스 및 시간대 객체를 사용하여 시간을보다 정확하게 처리하는 것이 좋습니다.

위의 방법을 통해 FTP_Rawlist () 의 결과에서 파일 크기 및 수정 시간을 쉽게 추출하여 파일 동기화, 로그 분석 및 기타 시나리오에 사용할 수 있습니다.