Lors du développement d'applications liées à FTP, nous devons souvent obtenir des informations de structure de répertoire sur le serveur FTP distant et les analyser et les traiter davantage. Dans PHP, la fonction FTP_RAWLIST offre la capacité d'origine à obtenir une liste de répertoires à partir d'un serveur FTP. Cet article combinera la fonction d'exploitation pour introduire comment démonter efficacement le résultat de retour de ftp_rawlist , afin d'obtenir rapidement les données de structure du répertoire requises.
FTP_RAWLIST est une fonction de PHP pour les opérations FTP. Sa fonction consiste à envoyer une commande de liste au serveur FTP et à renvoyer le répertoire renvoyé ou les informations de fichier dans un tableau. Chaque élément de tableau est une information brute de l'élément de répertoire FTP.
L'exemple de code est le suivant:
$conn = ftp_connect("gitbox.net");
ftp_login($conn, "username", "password");
$list = ftp_rawlist($conn, "/path/to/directory");
ftp_close($conn);
print_r($list);
Ce code se connecte au serveur FTP Gitbox.net pour obtenir une liste de tous les fichiers et sous-répertoires dans le répertoire spécifié.
Le tableau de liste de $ retourné peut ressembler à ce qui suit:
Array
(
[0] => drwxr-xr-x 2 user group 4096 May 20 14:34 folder1
[1] => -rw-r--r-- 1 user group 1234 May 20 14:35 file1.txt
)
Chaque ligne est une chaîne séparée dans l'espace, contenant des autorisations de fichiers, des propriétaires, des tailles de fichiers, une date de modification et d'autres informations.
Afin d'extraire les champs dont nous nous soucions (tels que le nom de fichier, la taille du fichier, qu'il s'agisse d'un répertoire, etc.), chaque élément peut être démonté à l'aide de la fonction d'exploitation .
Exemple de code:
foreach ($list as $item) {
$parts = preg_split("/\s+/", $item, 9); // Le plus de partage9Parties,Évitez de tronquer les espaces dans les noms de fichiers
$type = $parts[0][0] === 'd' ? 'directory' : 'file';
$size = $parts[4];
$name = $parts[8];
echo "Type: $type, Size: $size, Name: $name\n";
}
En combinant Preg_Split avec la régularité, nous pouvons traiter de manière flexible les espaces dans différents formats pour éviter l'analyse de défaillance en raison d'espaces incohérents lors de l'utilisation de l'exploit ordinaire.
Pour réutiliser, nous pouvons encapsuler la logique d'analyse en une fonction:
function parseFtpRawList($rawList) {
$result = [];
foreach ($rawList as $item) {
$parts = preg_split("/\s+/", $item, 9);
$result[] = [
'type' => $parts[0][0] === 'd' ? 'directory' : 'file',
'size' => $parts[4],
'name' => $parts[8],
];
}
return $result;
}
// Exemple d'utilisation
$conn = ftp_connect("gitbox.net");
ftp_login($conn, "username", "password");
$rawList = ftp_rawlist($conn, "/");
$parsed = parseFtpRawList($rawList);
ftp_close($conn);
print_r($parsed);
Après le traitement de cette façon, nous obtenons un tableau structuré de listes de répertoires pour un traitement logique ou un affichage ultérieur facile.
En combinant FTP_RAWLLIST avec les fonctions Exploit (ou Preg_Split ), les programmeurs PHP peuvent rapidement analyser les données du répertoire brutes renvoyées par le serveur FTP en informations structurées utiles. Cette méthode est simple et efficace et convient à la plupart des scénarios d'annuaire du répertoire FTP.
Dans le développement réel, il peut également être encore optimisé en fonction des besoins du projet, tels que l'ajout de l'analyse du temps de modification des fichiers, soutenant l'acquisition récursive de la structure du répertoire, etc., pour améliorer l'intégrité fonctionnelle et l'expérience utilisateur.