Aktueller Standort: Startseite> Neueste Artikel> FTP_RAWLIST und PREG_MATCH REGEGEBOTE PARSING -Dateiinformationen

FTP_RAWLIST und PREG_MATCH REGEGEBOTE PARSING -Dateiinformationen

gitbox 2025-05-26

<?php
// FTP Serverinformationen
$ftp_server = "gitbox.net";
$ftp_user = "your_username";
$ftp_pass = "your_password";

// Stellen Sie eine Verbindung her und melden Sie sich an
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
    die("Es kann keine Verbindung zu herstellen können FTP Server {$ftp_server}");
}

if (!ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    ftp_close($conn_id);
    die("FTP Fehler bei der Anmeldung");
}

// Wechseln Sie zum Zielverzeichnis
$remote_dir = "/path/to/your/dir";
if (!ftp_chdir($conn_id, $remote_dir)) {
    ftp_close($conn_id);
    die("Verzeichnis nicht wechseln: {$remote_dir}");
}

// Holen Sie sich die Verzeichnisliste,ähnlich ls -l Ausgabe
$raw_list = ftp_rawlist($conn_id, ".");

// Parsen jede Linie,示例Ausgabe解析结果
foreach ($raw_list as $line) {
    /**
     * Typische Formatbeispiele:
     * -rw-r--r--    1 owner    group        1234 May 25 12:34 filename.txt
     * drwxr-xr-x    2 owner    group        4096 Apr 10  2023 dirname
     *
     * Regelmäßige Beschreibung:
     * ^([\-ld])         Dateityp:-Normale Dateien,lSymbolverbindungen,dInhaltsverzeichnis
     * ([rwx\-]{9})      Berechtigungen9Charakter
     * \s+\d+\s+         Räume+Nummer(Anzahl der Links) + Räume
     * (\S+)\s+          Eigentümer
     * (\S+)\s+          Gruppe
     * (\d+)\s+          Dateigröße
     * (\w{3})\s+        Monat Abkürzung
     * (\d{1,2})\s+      Datum
     * ([\d:]{4,5}|\d{4})\s+ Zeit oder Jahr
     * (.+)$             Dateiname
     */
    $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 "Typ: " . ($type === 'd' ? 'Inhaltsverzeichnis' : ($type === '-' ? 'dokumentieren' : 'Link')) . "\n";
        echo "Berechtigungen: $perms\n";
        echo "Eigentümer: $owner\n";
        echo "Gruppe: $group\n";
        echo "Größe: $size Byte\n";
        echo "Änderungszeit: $month $day $time_or_year\n";
        echo "Dateiname: $filename\n";
        echo "---------------------\n";
    } else {
        echo "Die Linie kann nicht analysieren: $line\n";
    }
}

// Schließen Sie die Verbindung
ftp_close($conn_id);
?>