Position actuelle: Accueil> Derniers articles> Comment convertir le résultat de ftp_rawlist au format JSON

Comment convertir le résultat de ftp_rawlist au format JSON

gitbox 2025-05-26

1. Comprendre le format du résultat de retour ftp_rawlist

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


2. Analyse du résultat de ftp_rawlist à un tableau

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&#39;année prend l&#39;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;
}
?>

3. Exemple: Connectez-vous à FTP, obtenez la liste et convertissez-la en JSON

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&#39;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&#39;analyse est la même que ci-dessus,légèrement
?>

4. Résumé

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.