begin process at 2012 02 12 20:33:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > FONCTION GET_FILE() 1.5

FONCTION GET_FILE() 1.5


 Information sur la source

Note :
7,25 / 10 - par 4 personnes
7,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Niveau :Débutant Date de création :13/11/2003 Date de mise à jour :07/07/2004 17:48:43 Vu :3 053

Auteur : LocalStone

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

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

  • <?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;
  • }
  • /* ------------------------------ */
  • ?>
<?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


 Sources du même auteur

Source avec Zip Source avec une capture MOTEUR D'ASPECT POUR PHP
Source avec Zip [PHPHOOK] UN PETIT SYSTÈME DE GESTION DES HOOKS DE SUBVERSIO...
Source avec Zip [PHP5] TASKSCHEDULER, UN PETIT PLANIFICATEUR DE TÂCHE EN PHP...
Source avec Zip [PHP5] NAVIGUER DANS UNE COLLECTION À L'AIDE D'UNE PSEUDO SY...
Source avec Zip Source avec une capture CLASSE D'ÉDITION DES FICHIERS DE CONFIGURATION D'APACHE

 Sources de la même categorie

UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151
TROUVER LES DOUBLONS DANS UNE LISTE DE FICHIERS par soobook

Commentaires et avis

Commentaire de Nox le 13/11/2003 04:44:31

"je suis assez fière de moi pour l'instant "

Ya de koi!!
bravo

Commentaire de LocalStone le 14/11/2003 22:18:56

Bah merci ! :D

Commentaire de LiBe444 le 20/11/2003 14:34:17

Qui a dit que les calés en langage informatique l'étaient forcément en langage courant? (fier ne prend pas de e au masculin même si l'on trouve, encore de nos jours, des programmatrices).

Commentaire de LocalStone le 20/11/2003 17:27:06

Bon, je m'incline devant cette remarque forte de sens ...

Commentaire de LiBe444 le 21/11/2003 16:22:10

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.

Commentaire de LocalStone le 22/11/2003 14:17:34

: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 ?

Commentaire de LiBe444 le 22/11/2003 17:19:02

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 !!!

Commentaire de beeline le 25/04/2004 17:47:17

c propre et efficace, bref ce que je cherche...
j'apprecis.

Commentaire de momoxe le 04/08/2005 14:44:54

merci, je recherchais exactement cela pour faire un code de banniere assez dynamique que je posterais.
@++

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales