File "filtre06.php"

Full Path: /home/analogde/www/Python/Monsta-FTP-master/Filtrage_version/filtre06.php
File size: 2.74 KB
MIME-type: text/x-php
Charset: utf-8

<?php
// Tableau de noms de fichiers
$fichiers = [
    "fichier.txt",
    "fichier_v1.txt",
    "fichier_v2.txt",
    "fichier_v3.txt",
    "autre_fichier.txt",
    "fichier_v4.txt",
    "document.pdf",
    "document_v1.pdf",
    "image.png",
    "image_v1.png",
    "unique_file.docx"
];

// Tableau pour stocker les fichiers d'origine et leurs versions
$resultat = [];
$autresFichiers = []; // Pour les fichiers sans versions (_vX)

// Parcourir tous les fichiers
foreach ($fichiers as $fichier) {
    // Vérifier si le fichier correspond au format avec ou sans version
    if (preg_match('/^(.*?)(_v[0-9]+)?(\.[a-z0-9]+)$/i', $fichier, $matches)) {
        // Extraire le nom du fichier source (nom de base + extension)
        $sourceFile = isset($matches[2]) ? $matches[1] . $matches[3] : $fichier;

        // Ajouter au tableau des résultats
        if (!isset($resultat[$sourceFile])) {
            $resultat[$sourceFile] = [];
        }
        $resultat[$sourceFile][] = $fichier;
    } else {
        // Si le fichier ne correspond pas au modèle avec versions, l'ajouter aux autres fichiers
        $autresFichiers[] = $fichier;
    }
}

// Supprimer les fichiers d'origine qui ont des versions
foreach ($resultat as $source => &$versions) {
    // Si le tableau contient plus d'un fichier (le fichier source + des versions)
    if (count($versions) > 1) {
        // Supprimer le fichier source
        $versions = array_filter($versions, function ($file) use ($source) {
            return $file !== $source;
        });
    }
}
unset($versions); // Libérer la référence



// Afficher le tableau réindexé
//print_r($tableau);


// Réindexer les sous-tableaux
//foreach ($tableau as $cle => $sousTableau) {
//    $tableau[$cle] = array_values($sousTableau);
//}

// Afficher le tableau réindexé
//print_r($tableau);

echo "<pre>";
print_r($resultat);
echo "<pre>";


echo count($resultat);

$listing_keys = array_keys($resultat);
print_r( $listing_keys );

//print_r(array_keys($resultat));

//$retour = array_values($resultat["fichier.txt"]);

//echo "<pre>";
//print_r($retour);
//echo "<pre>";


for ($x = 0; $x <count($listing_keys); $x++) 
{
    echo " ---> " .$listing_keys[$x];
    $resultat[ $listing_keys[$x] ] = array_values($resultat[ $listing_keys[$x] ]);
}

echo "<pre>";
print_r($resultat);
echo "<pre>";


echo "Fini...";
// Ajouter les autres fichiers au tableau final sous la clé "autres_fichiers"
/*
if (!empty($autresFichiers)) {
    $resultat['autres_fichiers'] = $autresFichiers;
}

echo "<pre>";
print_r($resultat);
echo "<pre>";

// Afficher le résultat
foreach ($resultat as $source => $versions) {
    echo "Clé : $source\n";
    echo "Fichiers :\n";
    foreach ($versions as $version) {
        echo "  - $version\n";
    }
    echo "\n";
}
*/
?>