Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Python
/
Monsta-FTP-master
/
Filtrage_version
:
filtre07.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?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 regrouper les fichiers par clé $resultat = []; $autres = []; // Pour les fichiers sans versions (_vX) $pipo = []; // Tableau particulier // 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 $autres[] = $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 // Regrouper tous les fichiers (avec ou sans versions) dans un tableau unique sous "autres" $finalResult = $resultat; if (!empty($autres)) { $finalResult['autres'] = $autres; } // Parcourir le tableau final pour gérer les sous-tableaux avec un unique élément foreach ($finalResult as $key => $files) { if (count($files) === 1 && $files[0] === $key) { // Ajouter au tableau "pipo" $pipo[] = $files[0]; // Supprimer le sous-tableau correspondant unset($finalResult[$key]); } } echo "<pre>"; print_r($finalResult); echo "<pre>"; // Afficher les résultats echo "Tableau Pipo :\n"; foreach ($pipo as $file) { echo " - $file\n"; } echo "\nTableau Final :\n"; foreach ($finalResult as $key => $files) { echo "Clé : $key\n"; echo "Fichiers :\n"; foreach ($files as $file) { echo " - $file\n"; } echo "\n"; } ?>