File "filtre010.php"

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

<?php

// Tableau de noms de fichiers

function filtrage()
{


    $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 "+++++++++++++++++++++++++++++++++++++";

        echo " voici la liste des fichiers qui seront affichés ";

        echo count($resultat);

        $listing_keys = array_keys($resultat);

        print_r( $listing_keys );

        echo "+++++++++++++++++++++++++++++++++++++";

        //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>";

// Convertir en chaîne lisible
$content = print_r($resultat, true);

// Sauvegarder dans un fichier
file_put_contents('tableau.txt', $content);

for ($x = 0; $x <count($listing_keys); $x++) 
{

    echo " ---> " .$listing_keys[$x] ."<br>";
  


} 


// Parcourir le tableau principal
foreach ($resultat as $key => $subArray) {
    echo "Clé principale : $key\n"; // Affiche la clé principale
    foreach ($subArray as $subKey => $value) {
        echo " - Sous-clé : $subKey, Valeur : $value\n"; // Affiche la sous-clé et la valeur
    }
    echo "\n"; // Ligne vide pour mieux séparer les résultats
}

$resultat["version_initial"] = [];

$tab = array();

// Parcourir le tableau principal
foreach ($resultat as $key => $subArray) 
{
    // Obtenir le nombre d'éléments dans le sous-tableau
    $count = count($subArray);
    echo "Clé principale : $key contient $count élément(s)\n";

    if( $count == 1)
    {
        if( $key === $subArray[0] )
        {
            echo "++++ " .$key ." " .$subArray[0]; 
            $tab[] = $key;
            $resultat["version_initial"][] = $key;
        }    
    }

    // Afficher les éléments successivement
    /*foreach ($subArray as $value) {
        echo " - $value\n";
    }*/
    echo "\n"; // Ligne vide pour mieux séparer les résultats
}

print_r($tab);


unset( $resultat[ $tab[0] ]);
unset( $resultat[ $tab[1] ]);

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


// récupére toutes les clés et supprimer version_initial

$listing_keys = [];

$listing_keys = array_keys($resultat);

print_r($listing_keys);

echo "+++++++++++++++++++++++++";

// Vérifier si "image.png" existe dans le tableau
if (in_array("version_initial", $listing_keys)) 
{
    // Trouver l'index de "image.png"
    $key = array_search("version_initial", $listing_keys);
    // Supprimer l'élément à cet index
    unset($listing_keys[$key]);
}

// Réindexer le tableau après suppression
$listing_keys = array_values($listing_keys);

// Afficher le tableau après suppression
print_r($listing_keys);

for ($x = 0; $x <count($listing_keys); $x++) 
{

    echo " ---> " .$listing_keys[$x] ."<br>";
  


} 

if (isset($resultat["version_initial"])) {
    $version_initial_values = $resultat["version_initial"];
    
    // Afficher les valeurs
    foreach ($version_initial_values as $value) 
    {
        echo $value . "\n";
        $listing_keys[] = $value;
    }
} else {
    echo "La clé 'version_initial' n'existe pas dans le tableau.\n";
}

print_r($listing_keys);

////  maintenant on va prendre les valeurs dans listing_keys et les supprimées de rtesult


/*
echo "Tableau sauvegardé dans tableau.txt";

        echo "Fini...";


        $result = ["all" => []];

        // Parcourir le tableau principal
        foreach ($resultat as $key => $subArray) {
            // Vérifier si le sous-tableau contient une seule valeur et si la clé est égale à cette valeur
            if (count($subArray) === 1 && reset($subArray) === $key) {
                // Ajouter la valeur dans `all`
                $result["all"][] = $key;
        
                // Supprimer le sous-tableau du tableau principal
                unset($data[$key]);
            }
        }
        
        // Fusionner le tableau restant avec le tableau `all`
        $result = array_merge($result, $data);
        
        // Afficher le résultat
        print_r($result);
 */       

// 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";

}

*/

}

    filtrage();

?>