begin process at 2010 02 09 22:44:33
  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 :2 724

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

Source avec Zip EFFACER LES FICHIERS IMAGES ( .PNG ), D'UN RÉPERTOIRE TEMPS ... par christophe0511
COURTE ET SIMPLE FONCTION RÉCURSIVE POUR LECTURE DE RÉPERTOI... par mbdx
Source avec Zip Source avec une capture GESTIONNAIRE DE FICHIERS | MYSQL PHP 5.X {NEMENTON PHP MANA... par Nementon
Source avec Zip Source avec une capture LISTE REPERTOIRE (DIR EN PHP) par mephistope
Source avec Zip LIRE UNIQUEMENT LES X DERNIERS OCTETS D'UN FICHIER DISTANT (... par Equilibrius

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

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,342 sec (3)

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