Fonction get_file() 1.5

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 862 fois - Téléchargée 28 fois

Contenu du snippet

Salut à tous !
Et bien, je pense que le nom de la fonction est claire, mais je vais quand même expliquer ... Cette fonction permet de recuperer les noms, tailles et dates de fichiers recherchés dans un tableau indexé. Vous allez voir, c'est pas compliqué :

Source / Exemple :


<?php
/* ------------------------------ */
	function get_file() {
// On vérifie les arguments ...
		$arg_list = func_get_args();
		if (count($arg_list) < 2) return false; 
		if (substr($arg_list[0], -1) != '/') $arg_list[0] = $arg_list[0].'/';
		$arg_list[0] = str_replace('/', '\\', $arg_list[0]);
		if (!is_dir($arg_list[0])) return false;
		$i = 0;
		$ext_list = array();
// On créé le masque Perl à partir des arguments ...
		foreach ($arg_list as $arg_index => $arg_value) {
			if ($arg_value != '' AND $arg_index != 0) {
				$ext_list[$i] = strtolower($arg_value);
				$ext_list[$i] = str_replace('.', '\\.', $ext_list[$i]);
				$ext_list[$i] = str_replace('*', '(.*)', $ext_list[$i]);
				$ext_list[$i] = '/'.$ext_list[$i].'/i';
				$i++;  
			}
		}
		unset($i);
// On ouvre le répertoire ...
		$dir_in = opendir($arg_list[0]);
		$i = 1;
// Et pour tous les fichiers ...
		while ($file_in = readdir($dir_in)) {
			if (is_file($arg_list[0].$file_in)) {
				reset($ext_list);
// On regarde s'ils correspondent aux différents masques, et on ajoute les propriétés ...
				foreach ($ext_list as $ext_value) {
					if (preg_match($ext_value, $file_in)) {
						$list_out[$i]['name'] = $file_in;
						$list_out[$i]['directory'] = $arg_list[0];
						$list_out[$i]['date'] = date("H:i:s, d F Y", filectime($arg_list[0].$file_in));
						$list_out[$i]['size'] = ((round(filesize($arg_list[0].$file_in) / 1024, 2)).' kO');
						$i++;
					}
				}
			}
		}
		unset($i);
		closedir($dir_in);
// On supprime les redondances ...
	    $i = 0;
		$new_list = array();
		foreach ($list_out as $new_file) {
			$status_array = true;
			foreach ($new_list as $old_file) {
				if (($old_file['directory'].$old_file['name']) == ($new_file['directory'].$new_file['name'])) {
					$status_array = false;
				}
			}
			reset($new_list);
			if ($status_array) {
				$new_list[$i] = $new_file;
				$i++;
			}
		}
// Et on renvoie les valeures !
		return $new_list; 
	}
/* ------------------------------ */
?>

Conclusion :


Alors, vous avez vu, c'est pas bien compliqué :D ! Donc, juste un petit exemple :
$tablo = get_file('repertoire/', '*.jp*', '*.php');
Et donc, $tablo contiendra (par exemple) :
$tablo[0]['name'] = 'image1.jpeg';
$tablo[0]['directory'] = 'repertoire/';
$tablo[0]['size'] = '23,43 kO';
$tablo[0]['date'] = '22:44:55, 23 October 2003';
$tablo[1]['name'] = script.php';
$tablo[1]['directory'] = 'repertoire/';
$tablo[1]['size'] = '2,43 kO';
$tablo[1]['date'] = '02:00:55, 05 November 2003';
Et oui, y a encore quelques optimisations à faire, mais je suis assez fier de moi pour l'instant :) !
++
LocalStone

A voir également

Ajouter un commentaire Commentaires
Messages postés
71
Date d'inscription
jeudi 18 novembre 2004
Statut
Membre
Dernière intervention
12 août 2006

merci, je recherchais exactement cela pour faire un code de banniere assez dynamique que je posterais.
@++
Messages postés
83
Date d'inscription
jeudi 20 décembre 2001
Statut
Membre
Dernière intervention
9 juin 2009

c propre et efficace, bref ce que je cherche...
j'apprecis.
Messages postés
220
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
7 avril 2007

MOI je ramais pour faire afficher les dates et heures de post sur mon forum (www.po-et.new.fr) alors chapeau, ça c'est du professionnel !!!
Messages postés
514
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009

:D Idem, je m'incline devant cette remarque forte de sens !!! Mais je me relève aussi tôt. Mais et sinon, la source ? Tu en penses quoi ?
Messages postés
220
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
7 avril 2007

Il y a moins de honte à ne pas faire moins de 10 fautes chez monsieur Pivot que de prendre des cours d'informatiques chez un professeur particulier (si si ça existe!).

Donc garde ta fierté, tu la mérites.
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.