Fonction get_file() 1.5

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

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.