Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/03/2011, 15h43   #1
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Par défaut Exclure des fichiers de la suppression

Bonjour,

Dans un répertoire tempo, j'ai les fichiers suivants :

index.html
articles.txt
articles.zip
image.png
image.gif
image.jpeg

J'aimerias supprimer tout les fichiers sauf ceux-xi :

index.html
articles.txt

Avec ce code tout les fichiers sont supprimer :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
$contenu = array(); 
  $ressources = dir("tempo/"); 
    while($lecture = $ressources->read()){ 
        if($lecture != "." && $lecture != ".."){ 
            $contenu[] = $lecture; 
        } 
    } 
    $ressources->close(); 
 
    foreach($contenu as $v){ 
      @unlink("tempo/".$v); 
    }
Merci.
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h29   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
tout simplement
Code :
if($lecture != "." && $lecture != ".." && $lecture != "index.html" && $lecture != "articles.txt"){
plus élégamment :
Code :
1
2
3
 
$donttouch = array(".", "..", "index.html", "articles.txt");
if(!in_array($lecture, $donttouch)){
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 23h54   #3
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Voila un nouveau code qui fonctionne selon l'extension voule :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$extension = array('zip','rar');
$contenu = array();
  $ressources = dir("tempo/");
    while($lecture = $ressources->read()){
        if($lecture != "." && $lecture != ".."){
            $contenu[] = $lecture;
        }
    }
    $ressources->close();
 
    foreach($contenu as $v){
        $ext = pathinfo("tempo/".$v,PATHINFO_EXTENSION);
        if(in_array($ext,$extension)){
            @unlink("tempo/".$v);
        }
    } 
?>
Mais comment le faire fonctionner selon des noms+extensions ?

Par exemple je ne veux pas supprimer les fichiers contenant le mot news et qui ont l'extension zip ?

Merci.
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 11h32   #4
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Voila le code.

A corriger s'il y a des erreurs.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
$extension = array('zip','php','html');
$files = array();
$contenu = array();
  $ressources = dir("save/");
  echo "Files in directory save :<br />";
    while($lecture = $ressources->read()){
		echo "file =".$lecture."<br />";
        if($lecture != "." && $lecture != ".."){
            if(preg_match('/(index|news)/i',$lecture)){
                array_push($files,$lecture);
            }
            $contenu[] = $lecture;
        }
    }
    $ressources->close();
 
	echo 'contenu<br/><pre>';
    print_r($contenu);
    echo  '</pre>';
 
	echo 'files<br /><pre>';
    print_r($files);
    echo  '</pre>';
 
	echo "files to delete :<br />";
    foreach($contenu as $v){
        $ext = pathinfo("tempo/".$v,PATHINFO_EXTENSION);
		echo "Current file = ".$v."  |  ext = ".$ext."<br />";
 
		if(!in_array($ext,$extension) && !in_array($v,$files)){
			echo "==>  delete : ".$v."<br />";
            @unlink("save/".$v);
		}
    } 
?>
Merci.
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h45.


 
 
 
 
Partenaires

Hébergement Web