FTP_RAWLIST Renvoie un tableau de chaînes, chaque chaîne est similaire à la sortie de la commande ls -l dans le système Linux, par exemple:
-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
Les informations contenues dans chaque ligne sont:
Autorisations de fichiers (telles que -rw-r - r-- )
Nombre de liens rigoureux
L'utilisateur auquel appartient le fichier
Le fichier appartient au groupe
Taille du fichier (numéro d'octet)
Date modifiée (incluant généralement le mois, le jour, l'heure ou l'année)
nom de fichier
L'objectif du processus d'analyse est de décomposer chaque ligne de chaîne en différents champs et de l'organiser en paires de valeurs clés. L'exemple de code est le suivant:
<?php
function parseRawList(array $rawList): array {
$files = [];
foreach ($rawList as $line) {
$chunks = preg_split('/\s+/', $line, 9);
if (count($chunks) < 9) {
continue; // Exception du format,franchir
}
list($permissions, $links, $owner, $group, $size, $month, $day, $timeOrYear, $name) = $chunks;
// selontimeOrYearJuge Year ou Time
if (strpos($timeOrYear, ':') !== false) {
// Y compris le temps,L'année prend l'année en cours
$year = date('Y');
$time = $timeOrYear;
} else {
$year = $timeOrYear;
$time = '00:00';
}
// Épissage du temps de modification complet,Convertir en horodatage
$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;
}
?>
L'exemple complet montre comment se connecter à un serveur FTP, appeler ftp_rawlist , puis utiliser la fonction d'analyse ci-dessus pour convertir et sortir JSON:
<?php
$ftpServer = 'gitbox.net';
$ftpUser = 'username';
$ftpPass = 'password';
// ÉtablirFTPconnecter
$connId = ftp_connect($ftpServer);
if (!$connId) {
die("无法connecter到FTPserveur $ftpServer");
}
// Se connecter
if (!ftp_login($connId, $ftpUser, $ftpPass)) {
ftp_close($connId);
die("FTPSe connecter失败");
}
// Obtenez la liste des fichiers d'origine
$rawList = ftp_rawlist($connId, '.');
if ($rawList === false) {
ftp_close($connId);
die("ObtenirFTPÉchec de la liste");
}
// Liste analytique
$filesArray = parseRawList($rawList);
// SortirJSONFormat
header('Content-Type: application/json');
echo json_encode($filesArray, JSON_PRETTY_PRINT);
// 关闭connecter
ftp_close($connId);
// La fonction d'analyse est la même que ci-dessus,légèrement
?>
Grâce à la méthode ci-dessus, nous convertissons le résultat de la liste des chaînes de la fonction ftp_rawlist en un tableau structuré et générons enfin des données de format JSON. Cela facilite non seulement le fonctionnement de la liste des fichiers FTP dans le programme PHP, mais facilite également la transmission des données vers les systèmes frontaux ou d'autres systèmes via l'API.
Cette méthode est particulièrement adaptée aux fonctions de backend de gestion ou de navigation de fichiers basées sur les listes de fichiers FTP, ce qui rend le traitement des données plus intuitif et plus efficace.