Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
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 07/04/2008, 12h09   #1
Invité de passage
 
Inscription : août 2005
Messages : 18
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 18
Points : 0
Points : 0
Par défaut Ereg() recherche chaine avec des ()

Bonjour

J'ai une fonction de listage de répertoire :

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
37
38
39
40
41
/* liste des dossiers */ 
function list_dir($base, $cur, $level=0) { 
  global $PHP_SELF, $BASE, $order, $asc; 
 
  if ($dir = opendir($base)) { 
    $tab = array(); 
    while($entry = readdir($dir)) { 
      if(is_dir($base."/".$entry) && !in_array($entry, array(".",".."))) { 
        $tab[] = addScheme($entry, $base, 'dir'); 
      } 
    } 
    /* tri */ 
    usort($tab,"cmp_name"); 
    foreach($tab as $elem) { 
      $entry = $elem['name'];
 
      /* chemin relatif à la racine */ 
      $file = $base."/".$entry; 
 
     /* marge gauche */ 
      for($i=1; $i<=(4*$level); $i++) { 
        echo "&nbsp;"; 
      } 
      /* on saute une ligne tout les 20 caracteres */ 
      $entry=wordwrap($entry, 20, "\n", 1);
      /* l'entrée est-elle le dossier courant */ 
      if($file == $cur) { 
        echo "<img src=\"\image\icone\dir-open.gif\" />&nbsp;$entry<br />\n"; 
      } else { 
        echo "<img src=\"\image\icone\dir-close.gif\" />&nbsp;<a href=\"$PHP_SELF?dir=". rawurlencode($file) ."&order=$order&asc=$asc\">$entry</a><br />\n"; 
      } 
 
      /* l'entrée est-elle dans la branche dont le dossier courant est la feuille */ 
        if(ereg($file."/",$cur."/")) { 
        list_dir($file, $cur, $level+1); 
      } 
 
    } 
    closedir($dir); 
  } 
}
Lorsque j'affiche le résultat, j'arrive à lister les répertoires... sauf que j'ai des répertoires avec des ().

Exemple : /qualite/( 1 )dossier/

avec des sous dossiers ... (et oui ils me font chier à avoir créer des dossiers à la c****.


Bref, je pense que j'ai isolé le problème. Si j'enlève la condition if(ereg($file."/",$cur."/"))

Je me retrouve avec tous mes répertoires listés.(tout s'affiche)
Si je remet cette condition et que je ressaye sur des dossiers sans () alors ça fonctionne.

en fait, cette partie la me sert à ne lister que les sous répertoires du dossier sélectionné,
et son but étant de regarder si "l'entrée est-elle dans la branche dont le dossier courant est la feuille"

Merci de m'aider.
Je suis ouvert à d'autre méthode.
PsYKrO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 22h58   #2
Membre Expert
 
Avatar de gwinyam
 
Homme Mathieu ROBIN
Développeur Web
Inscription : mai 2006
Messages : 1 116
Détails du profil
Informations personnelles :
Nom : Homme Mathieu ROBIN
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mai 2006
Messages : 1 116
Points : 2 142
Points : 2 142
Je dis possiblement une bêtise, j'ai le cerveau en compote.

Remplace ça:
Code php :
1
2
3
if(ereg($file."/",$cur."/")) { 
        list_dir($file, $cur, $level+1); 
      }
Par ça:
Code php :
1
2
3
4
5
6
 
$pattern=ereg_replace("\(", $file."/", "\(");
$pattern=ereg_replace("\)", $pattern, "\)");
if(ereg($pattern,$cur."/")) {
   list_dir($file, $cur, $level+1);
}
gwinyam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h17.


 
 
 
 
Partenaires

Hébergement Web