FTP_RAWLIST gibt ein Array von Zeichenfolgen zurück. Jede Zeichenfolge ähnelt der Ausgabe des LS -L -Befehls im Linux -System, zum Beispiel:
-rw-r--r-- 1 user group 1234 May 10 10:00 file1.txt
drwxr-xr-x 2 user group 4096 May 09 09:00 folder1
Die in jeder Zeile enthaltenen Informationen sind:
Dateiberechtigungen (wie -rw-r-r-- )
Harte Linkzahl
Der Benutzer, zu dem die Datei gehört
Datei gehört zur Gruppe
Dateigröße (Byte -Nummer)
Modifiziertes Datum (normalerweise einschließlich Monat, Tag, Zeit oder Jahr)
Dateiname
Der Schwerpunkt des Analyseprozesses liegt auf der Aufschlüsselung jeder Stringlinie in verschiedene Felder und organisierte sie in Schlüsselwertpaare. Der Beispielcode lautet wie folgt:
<?php
function parseRawList(array $rawList): array {
$files = [];
foreach ($rawList as $line) {
$chunks = preg_split('/\s+/', $line, 9);
if (count($chunks) < 9) {
continue; // Ausnahme des Formats,über etwas springen
}
list($permissions, $links, $owner, $group, $size, $month, $day, $timeOrYear, $name) = $chunks;
// entsprechendtimeOrYearRichter Jahr oder Zeit
if (strpos($timeOrYear, ':') !== false) {
// Einschließlich Zeit,Das Jahr dauert das laufende Jahr
$year = date('Y');
$time = $timeOrYear;
} else {
$year = $timeOrYear;
$time = '00:00';
}
// Spleißen vollständige Änderungszeit,In den Zeitstempel konvertieren
$dateStr = "$month $day $year $time";
$timestamp = strtotime($dateStr);
$files[] = [
'name' => $name,
'permissions' => $permissions,
'links' => (int)$links,
'owner' => $owner,
'group' => $group,
'size' => (int)$size,
'modified' => date('Y-m-d H:i:s', $timestamp),
'is_dir' => $permissions[0] === 'd',
];
}
return $files;
}
?>
Das vollständige Beispiel zeigt, wie Sie eine Verbindung zu einem FTP -Server herstellen, FTP_RAWLIST aufrufen und dann mit der oben genannten Parsing -Funktion JSON konvertieren und ausgeben:
<?php
$ftpServer = 'gitbox.net';
$ftpUser = 'username';
$ftpPass = 'password';
// GründenFTPverbinden
$connId = ftp_connect($ftpServer);
if (!$connId) {
die("无法verbinden到FTPServer $ftpServer");
}
// Einloggen
if (!ftp_login($connId, $ftpUser, $ftpPass)) {
ftp_close($connId);
die("FTPEinloggen失败");
}
// Holen Sie sich die Original -Dateiliste
$rawList = ftp_rawlist($connId, '.');
if ($rawList === false) {
ftp_close($connId);
die("ErhaltenFTPListe fehlgeschlagen");
}
// Analyseliste
$filesArray = parseRawList($rawList);
// AusgabeJSONFormat
header('Content-Type: application/json');
echo json_encode($filesArray, JSON_PRETTY_PRINT);
// 关闭verbinden
ftp_close($connId);
// Die Parsingfunktion ist die gleiche wie oben,leicht
?>
Durch die obige Methode konvertieren wir das Ergebnis der String -Liste der Funktion ftp_rawlist in ein strukturiertes Array und generieren schließlich JSON -Formatdaten. Dies erleichtert nicht nur den Betrieb der FTP-Dateiliste innerhalb des PHP-Programms, sondern erleichtert auch die Übertragung von Daten auf das Front-End oder andere Systeme über die API.
Diese Methode eignet sich besonders zum Erstellen von Backend- oder Datei -Browsing -Funktionen für das Management von FTP -Dateilisten, wodurch die Datenverarbeitung intuitiver und effizienter gestaltet wird.