Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Four
/
Monsta-FTP-master
/
tmp
:
debug_version01.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /* Je veux ajouter successivement dans un tableau la même chaîne qui correspond au nom d'un fichier Le nom est le suivant : $s = capture_IC.jpg Avant de l'insèrer pour la première fois, on vérifie qu'il n'existe pas dans le tableau. Sachant qu'il n'existe pas, il est stocké sans aucun changement, à l'identique. Si on veux l’insérer $s pour la deuxième fois, il faut vérifier si la version $s existe déjà. Dans ce cas, on va crée une sous chaine qui correspondra à l'indice de la nouvelle version. Le format correspond a la chaine qui représente la version est la suivante : _vx Sachant que x représente le numéro de la version, nous aurons donc _v1 il faudra l'intégrer au nom du fichier $s de la façon suivante : on récupére l'extension du fichier avec le point qui se trouve avant, dans une chaine temporaire on enléve l'extension, puis on concataine $s et _v1 puis on rajoute à la fin l'extension. Cela nous donne la chaine compléte qui sera stockée qui vaudra capture_IC_v1.jpg Maintenant, si on veux rajoute une nouvelle fois la chaine $, il faut vérifié s'il existe une ou plusieurs version qui on la forme capture_IC_vx.jpg, dans ce cas on va rechercher dans tous les chaines présentes dans le tableau l'élément _vx avec le x qui est le plus grand. On incrémentera sa valeur puis on la rajoutera dans le tableau. Cela ainsi de suite Je veux faire un essai en insérant la chaine $s 20 fois */ function insertFileVersion($fichier, $chemin) //, &$fileList) { $recherche = $chemin ."/" .$fichier; //echo "<pre>"; //print_r(listeFichiersRepertoire($path)); //echo "</pre>"; $liste_fichier_repertoire = []; $liste_fichier_repertoire = listeFichiersRepertoire($chemin); if( is_dir($chemin) ) { if( !file_exists($recherche) ) { echo " Non trouvé" ."<br>"; // Generer un fichier texte aleatoire $minSizeKb = 1; // Taille minimale en Ko $maxSizeKb = 5; // Taille maximale en Ko generateRandomTextFile($fichier, $minSizeKb, $maxSizeKb); } else { list($nom, $ext) = Fichier_separation_nom_extension($fichier); $fichiersFiltres = array_filter($liste_fichier_repertoire, function($fichier) use ($nom) { return strpos($fichier, $nom) !== false; }); $liste_base_commune = []; //echo "Fichiers contenant '$nom':<br>"; foreach ($fichiersFiltres as $fichier) { $liste_base_commune[] = $fichier; } $pathInfo = pathinfo($fichier); $baseName = $pathInfo['filename']; $extension = $pathInfo['extension']; if(count($liste_base_commune) == 1) { $elementUnique = reset($liste_base_commune); if( $elementUnique === $fichier) { $increment_nom_version = $baseName ."_v1" ."." .$extension; echo "Nouvelle version : " .$increment_nom_version; $minSizeKb = 1; // Taille minimale en Ko $maxSizeKb = 5; // Taille maximale en Ko generateRandomTextFile($increment_nom_version, $minSizeKb, $maxSizeKb); } } else { echo "blabla"; // Afficher le résultat echo "<pre>"; print_r($liste_base_commune); echo "</pre>"; $sousChaine = "_v"; $tableauFiltre = array_filter($liste_base_commune, function($valeur) use ($sousChaine) { return strpos($valeur, $sousChaine) !== false; // Vérifie si "_v" est dans la chaîne }); // Réinitialiser les clés (optionnel) $tableauFiltre = array_values($tableauFiltre); // Afficher le tableau filtré echo "Chaînes contenant '_v' :\n"; print_r($tableauFiltre); list($nom, $valeur_max_version) = detection_derniere_version($tableauFiltre); $nouvel_indice_version = $valeur_max_version + 1; // Supprimer l'entier après "_v" $sansEntier = preg_replace('/_v\d+/', '_v', $nom); $pathInfo = pathinfo($sansEntier); $baseName = $pathInfo['filename']; $extension = $pathInfo['extension']; $increment_nom_version = $baseName .$nouvel_indice_version ."." .$extension; echo "Nouvelle version : " .$increment_nom_version; $minSizeKb = 1; // Taille minimale en Ko $maxSizeKb = 5; // Taille maximale en Ko generateRandomTextFile($increment_nom_version, $minSizeKb, $maxSizeKb); } } } } function detection_derniere_version($tableau) { // Initialiser les variables pour garder la chaîne et la valeur maximale $chaineMax = null; $valeurMax = -1; // Parcourir chaque chaîne foreach ($tableau as $chaine) { // Extraire l'entier après "_v" (si existant) if (preg_match('/_v(\d+)/', $chaine, $matches)) { $valeur = (int) $matches[1]; // Convertir la correspondance en entier // Vérifier si c'est la plus grande valeur if ($valeur > $valeurMax) { $valeurMax = $valeur; $chaineMax = $chaine; } } } // Afficher la chaîne avec la valeur maximale //echo "La chaîne avec la plus grande valeur est : $chaineMax (valeur : $valeurMax)"; return [$chaineMax, $valeurMax]; } function Fichier_separation_nom_extension($fichier) { $pathInfo = pathinfo($fichier); $base = $pathInfo['filename']; $extension = $pathInfo['extension']; //echo "Nom du fichier : $baseName\n"; //echo "Extension : $extension\n"; return [$base, $extension]; } function listeFichiersRepertoire($repertoire) { $liste_fichier_repertoire = []; if (is_dir($repertoire)) { $fichiers = scandir($repertoire); foreach ($fichiers as $fichier) { if ($fichier !== '.' && $fichier !== '..') { $liste_fichier_repertoire[] = $fichier; } } } return($liste_fichier_repertoire); } function generateRandomTextFile($fileName, $minSizeKb, $maxSizeKb) { // Générer une taille aléatoire entre les limites spécifiées (en octets) $fileSize = rand($minSizeKb * 1024, $maxSizeKb * 1024); // Caractères possibles pour le contenu aléatoire $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $charactersLength = strlen($characters); // Générer un contenu aléatoire $content = ''; for ($i = 0; $i < $fileSize; $i++) { $content .= $characters[rand(0, $charactersLength - 1)]; } // Écrire le contenu dans un fichier file_put_contents($fileName, $content); } $fichier = "capture_IC.txt"; $chemin = "/home/analogde/www/2024_PHP/2024_PHP_25_12_2024/FTP/Monsta-FTP-master/tmp"; // Insérer la chaîne 20 fois for ($i = 0; $i < 20; $i++) { insertFileVersion($fichier, $chemin); } ?>