Bonjour,
J'aimerai créer une fonction qui permette d'analyser le contenu d'un répertoire et qui en extrait les noms de tous les fichiers ayant pour suffixe .xml, swf et jpg. Idéalement, j'aimerai que chaque nom de fichier soit stocké dans une variable différente.
J'ai cherché des fonctions PHP, en vain. Quelqu'un peut-il m'aider ?
Merci.
Regardes le premier lien que Google me donne : https://openclassrooms.com/courses/lister-le-contenu-d-un-dossier-avec-php
Salut,
Le plus simple pour scanner un dossier c'est quand même la fonction glob
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename occupe " . filesize($filename) . "\n";
}
?>
Pourquoi ne pas utiliser un tableau pour stocker les noms ?
Et c'est que tu n'a pas la fonction pour les répertoires ?
La fonction pourrait remplir automatiquement une table pour stocker les noms + extensions + ... , mais là je cherche un moyen de scanner un repertoire et d'en extraire le nom de tous les fichiers se terminant par exemple par .xml. Remplir les tables manuellement est une tâche trop longue vue le nombre de répertoire que j'ai à gérer.
Je comprend pas ton raisonnement là. Si tu fait :
$fichiers = [];
foreach($mesFichiers as $fichier){
if($fichier->isXmlFile()) // J'invente la fonction isXmlFile hein ?!
$fichiers[] = $fichier;
}
// Ici $fichiers contiendra tout les nom des fichiers XML
La fonction isXmlFile() est censée vérifier l'extension de ton fichier avec une regex ou un strstr()
Et n'oublie surtour pas de return $fichiers apres ta boucle enfin si tu l'utilise dans une fonction
<?php
$dir = 'mon_repertoire';
$response = scan($dir);
function scan($dir){
$files = array();
if(file_exists($dir)){
foreach(scandir($dir) as $f) {
if(!$f || $f[0] == '.') {
continue;
}
if(is_dir($dir . '/' . $f)) {
$files[] = array(
"name" => $f,
"type" => "folder",
"path" => $dir . '/' . $f,
"items" => scan($dir . '/' . $f)
);
}
else {
$files[] = array(
"name" => $f,
"type" => "file",
"path" => $dir . '/' . $f,
"size" => filesize($dir . '/' . $f)
);
}
}
}
return $files;
}
header('Content-type: application/json');
echo json_encode(array(
"name" => "files",
"type" => "folder",
"path" => $dir,
"items" => $response
));
Ceci va te retourner toutes les infos sur tes fichiers dans 'monrepertoire' en json.
Pour la suite a toi de jouer ;)
TJ
Merci. Le script liste également les sous-repertoire, ce que je ne souhaite pas. J'aimerai ne lister que les fichiers sur 1 niveau. Pour json, je ne connais que de nom. Je vais chercher comment gérer ce format...
Il te suffit d'ignorer les sous-repertoire quand tu fais ton traitement !! Pour gérer le JSON en php par la suite Grafikart a fait un tuto sur recaptcha il te suffit juste de modifier un peut le code :
http://www.grafikart.fr/tutoriels/php/recaptcha-anti-spam-346
Salut,
à noter, tu n'as pas besoin du JSON pour gérer ces données. $response
est un tableau, tu en fais ce qu'il te chante.
D'ailleurs, je ne suis pas convaincu par la fonction de monsieur, mais soit.
Je suis débutant, j'ai un peu de mal, là. En fait, j'ai besoin de récupérer le nom d'un fichier portant l'extension .xml dans un répertoire. Ne faut-il pas une fonction de recherche de fichiers portant l'extension .xml dans ce répertoire ? Je viens d'écrire une fonction qui me permet de récupérer le chemin du repertoire. Ensuite, je suis bloqué :-(
function repertoire($val,$dir_name) {
$dir = $dir_name;
$name = strstr($dir, $val);
return $name;
}
Je connais cette fonction permettant de lister un repertoire, mais je bloque sur comment 'identifier' le fichier en question puis le stocker dans une variable.