현재 위치: > 최신 기사 목록> FTP_RAWLIST 및 PREG_MATCH 정기 구문 분석 파일 정보

FTP_RAWLIST 및 PREG_MATCH 정기 구문 분석 파일 정보

gitbox 2025-05-26

<?php
// FTP 서버 정보
$ftp_server = "gitbox.net";
$ftp_user = "your_username";
$ftp_pass = "your_password";

// 연결을 설정하고 로그인하십시오
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
    die("연결할 수 없습니다 FTP 섬기는 사람 {$ftp_server}");
}

if (!ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    ftp_close($conn_id);
    die("FTP 로그인이 실패했습니다");
}

// 대상 디렉토리로 전환하십시오
$remote_dir = "/path/to/your/dir";
if (!ftp_chdir($conn_id, $remote_dir)) {
    ftp_close($conn_id);
    die("디렉토리를 전환하지 못했습니다: {$remote_dir}");
}

// 디렉토리 목록을 가져옵니다,비슷한 ls -l 산출
$raw_list = ftp_rawlist($conn_id, ".");

// 각 라인을 구문 분석합니다,示例산출解析结果
foreach ($raw_list as $line) {
    /**
     * 일반적인 형식 예제:
     * -rw-r--r--    1 owner    group        1234 May 25 12:34 filename.txt
     * drwxr-xr-x    2 owner    group        4096 Apr 10  2023 dirname
     *
     * 정기적 인 설명:
     * ^([\-ld])         파일 유형:-일반 파일,l기호 링크,d목차
     * ([rwx\-]{9})      권한9성격
     * \s+\d+\s+         공간+숫자(링크 수) + 공간
     * (\S+)\s+          소유자
     * (\S+)\s+          그룹
     * (\d+)\s+          파일 크기
     * (\w{3})\s+        월 약어
     * (\d{1,2})\s+      날짜
     * ([\d:]{4,5}|\d{4})\s+ 시간 또는 연도
     * (.+)$             파일 이름
     */
    $pattern = '/^([\-ld])([rwx\-]{9})\s+\d+\s+(\S+)\s+(\S+)\s+(\d+)\s+(\w{3})\s+(\d{1,2})\s+([\d:]{4,5}|\d{4})\s+(.+)$/';

    if (preg_match($pattern, $line, $matches)) {
        list(, $type, $perms, $owner, $group, $size, $month, $day, $time_or_year, $filename) = $matches;

        echo "유형: " . ($type === 'd' ? '목차' : ($type === '-' ? '문서' : '링크')) . "\n";
        echo "권한: $perms\n";
        echo "소유자: $owner\n";
        echo "그룹: $group\n";
        echo "크기: $size 바이트\n";
        echo "수정 시간: $month $day $time_or_year\n";
        echo "파일 이름: $filename\n";
        echo "---------------------\n";
    } else {
        echo "선을 구문 분석 할 수 없습니다: $line\n";
    }
}

// 연결을 닫으십시오
ftp_close($conn_id);
?>