IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ereg() recherche chaine avec des ()


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut Ereg() recherche chaine avec des ()
    Bonjour

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    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 162
    Par défaut
    Je dis possiblement une bêtise, j'ai le cerveau en compote.

    Remplace ça:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(ereg($file."/",$cur."/")) { 
            list_dir($file, $cur, $level+1); 
          }
    Par ça:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $pattern=ereg_replace("\(", $file."/", "\(");
    $pattern=ereg_replace("\)", $pattern, "\)");
    if(ereg($pattern,$cur."/")) {
       list_dir($file, $cur, $level+1);
    }

Discussions similaires

  1. Recherche Fulltext chaine avec des points
    Par pcalame dans le forum Requêtes
    Réponses: 6
    Dernier message: 15/11/2011, 08h47
  2. soucis de chaine avec des espaces
    Par glouffy6 dans le forum Langage
    Réponses: 10
    Dernier message: 31/07/2007, 16h40
  3. [Débutant] Scinder une chaine avec des points
    Par poiwalt dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 06/07/2007, 20h09
  4. [VS] rechercher/remplacer avec des regexp
    Par v1nce dans le forum Visual Studio
    Réponses: 4
    Dernier message: 03/07/2007, 14h58
  5. [VB.NET] Compléter une chaine avec des espaces
    Par Lois dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 09h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo