Page 1 sur 1

Lire dossiers et sous dossier avec recherche 3 premières lettres des fichiers

Posté : 12 sept. 2021, 07:47
par Jefekoi
Bonjour à tous,

J'aimerais scanner des dossiers et sous dossier afin de compter le nombre de fichier commençant par "444"

J'ai trouvé cette source qui lit bien les dossiers et sous dossier, mais je n'arrive pas à l'adapter pour qu'il me donne la quantité de fichier commençant par "444"

Pourriez vous m'aider ?

Merci d'avance

<?php
function getAllContentOfLocation($loc)
{
$scandir = scandir($loc);
$scandir = array_filter($scandir, function($element){
return !preg_match('/^\./', $element);
});
if(empty($scandir)) echo '<li style="color:red">Empty Dir</li>';
foreach($scandir as $file){
$baseLink = $loc . DIRECTORY_SEPARATOR . $file;
echo '<ol>';
if(is_dir($baseLink))
{
echo '<li style="font-weight:bold;color:blue">'.$file.'</li>';
getAllContentOfLocation($baseLink);
}else{
if (substr($files, 0, 3)=="444") {
echo '<li>'.substr($file,0,3).'</li>';
}
}
echo '</ol>';
}
}
?>

Re: Lire dossiers et sous dossier avec recherche 3 premières lettres des fichiers

Posté : 12 sept. 2021, 19:36
par Jefekoi
J'ai trouvé une autre source mais je n'arrive toujours à comptabiliser le nombre de fichier commençant par "444" ($compt)
<?php
$folder = "Mondossier";

//echo "<ul>";
list_files($folder);
//echo "</ul>";

// iterative function to read and list all the files and folders
function list_files($path) {

// Executing Opendir
$dir_handle = @opendir($path) or die("Unable to open $path");

// Extract the folder name in case it is a subdirectory
$dirname = (strpos('/', $path)) ? end(explode("/", $path)) : $path;

// Allowable files
$allowedExts = array("pdf", "doc", "docx", "txt", "jpg","jpeg", "png", "gif", "zip");

// Everything under this are either a file or a subdirectory
// echo ("<li>$dirname\n");

// Display the subfolder
// echo "<ul>\n";

// Loop through the files that existed in the folder
while (false !== ($file = readdir($dir_handle))) {

// Check if the name is not the current folder or root folder
if($file!="." && $file!="..") {
// Check if this file is a subdirectory
if (is_dir($path."/".$file)) {

// iterate if this is also a folder
list_files($path."/".$file);
} else {

// get the extension of the file
$extension = strtolower(pathinfo($file,PATHINFO_EXTENSION));
// check if extension is allowed
if (in_array($extension, $allowedExts)) {
// The file is allowed file
if (substr($file, 0, 3)=="444") {$compt++;}
}
}
}
} // end while
// Close the list
// echo "</ul>\n";
// echo "</li>\n";
echo "Total=".$compt."</br>";
//closing the directory
closedir($dir_handle);
}

?>

Re: Lire dossiers et sous dossier avec recherche 3 premières lettres des fichiers

Posté : 19 sept. 2021, 16:23
par Jefekoi
Bonjour,

Vraiment personne pour m'aider ?
Compter le nombre de fichiers commençant par 444*.* dans un dossier et ses sous dossiers ?

Merci

Re: Lire dossiers et sous dossier avec recherche 3 premières lettres des fichiers

Posté : 19 sept. 2021, 18:16
par @rthur
Quel est le souci en fait, où bloques-tu ?

Si les fonctions que tu as trouvées parcourent bien l'ensemble des fichiers, tu as juste à
1) initialiser une variable à 0
2) à chaque fois que ta fonction rencontre un fichier, faire un test sur le nom pour savoir si il commence par 444. Ce test s'effectue avec un if() et un preg_match()
3) si le test est concluant tu incrémentes ta variable compteur de 1
4) à la fin du traitement tu affiches le nombre

Re: Lire dossiers et sous dossier avec recherche 3 premières lettres des fichiers

Posté : 19 sept. 2021, 19:37
par Jefekoi
Bonjour et merci pour la réponse.
là ou je rencontre le problème c'est au niveau du compteur,
lorsqu'il rencontre un nouveau dossier il repart à zéro
<?php
function outputFiles($path){
if(file_exists($path) && is_dir($path)){
$files = glob($path ."/*");
//$countFile = 0;
if(count($files) > 0){
foreach($files as $file){
if(is_file("$file")){
if (substr(basename($file),0,4)=="4444") {$countFile++;echo $countFile." : ".basename($file)."</br>"."\n";$_SESSION['countFile']=$countFile;}
} else if(is_dir("$file")){
outputFiles("$file");
}
}
} else{
echo "ERROR: No such file found in the directory.";
}
} else {
echo "ERROR: The directory does not exist.";
}
}
outputFiles("dossier/upload_forum");


?>

Re: Lire dossiers et sous dossier avec recherche 3 premières lettres des fichiers

Posté : 19 sept. 2021, 20:21
par Jefekoi
C'est bon j'ai trouvé
J'utilise la session

<? session_start();?>
<?php
$_SESSION['countFile']=0;

function outputFiles($path){
if(file_exists($path) && is_dir($path)){
$files = glob($path ."/*");
//$countFile = 0;
if(count($files) > 0){
foreach($files as $file){
if(is_file("$file")){
if (substr(basename($file),0,4)=="4444") {$countFile=$_SESSION['countFile']+1; echo $countFile." : ".basename($file)."</br>"."\n";$_SESSION['countFile']=$countFile;}
} else if(is_dir("$file")){
outputFiles("$file");
}
}
} else{
echo "ERROR: No such file found in the directory.";
}
} else {
echo "ERROR: The directory does not exist.";
}
}
outputFiles("dossier/upload_forum");