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 :

Trouver tous les "/mot" dans une chaîne [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Points : 71
    Points
    71
    Par défaut Trouver tous les "/mot" dans une chaîne
    Bonjour à tous,

    J'ai une chaîne, appelée $current_dir, qui réprésente le chemin.

    ./images/application
    par exemple.

    Je souhaite trouver et afficher tous les dossiers situés après les slashs, c'est-à-dire : images<br>application<br> dans cet exemple.

    J'ai essayé d'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(ereg('/[[:alpha:]]+', $current_dir, $reg_dir))
    	foreach($reg_dir as $elem)
    		echo $elem.'<br>';
    Mais cela ne m'affiche seulement le premier dossier, qui est images.
    Je voudrais ne pas afficher le slash, je sais pas si c'est possible, au pire je pourrais refaire une condition avec un regex qui trouvera le slash et l'envera dans la boucle chargée de trouver les dossiers.

    Comment puis-je faire ?
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 176
    Points : 8 368
    Points
    8 368
    Billets dans le blog
    17
    Par défaut
    Hum fais un explode( ) sur /, supprime le 1er élément du tableau obtenu (si tu ne veux vraiment pas afficher le 1er répertoire du chemin), puis un foreach( ).
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    +1

    Si tu veux absolument utiliser les regex, je te conseille preg_match_all() plutôt qu'ereg().

  4. #4
    Membre régulier Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Points : 71
    Points
    71
    Par défaut
    Ok merci beaucoup, mais si quelqu'un peut m'aider à trouver la bonne regex, ça serait très sympa ^^ car je n'y arrive pas après une demie heure d'essais...

  5. #5
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Salut micatmidog

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $chaine = "./truc/machin/bidule";
     
    preg_match_all ("`([^/\.].)+`", $chaine, $match);
     
    foreach ($match[0] as $m) {
        echo $m."<br />";
    }
     
    ?>
    dieu sait que j'aime les PCRE, mais je rejoins pourtant l'avis de Séb. concernant l'utilisation plus simple d'un explode()



  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    ska_root : C'est pas drôle, tu lui as donné la solution à ne pas utiliser...

    Voici ce dont parlait Séb. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    $chaine = "./truc/machin/bidule";
     
    if($repertoires = split('/', $chaine)){
        foreach ($repertoires as $repertoire) {
            echo $repertoire."<br />";
        }
    }
     
    ?>

  7. #7
    Membre régulier Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Points : 71
    Points
    71
    Par défaut
    Merci beaucoup ^^

    Salut ska_root au passage

  8. #8
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par Kirkis
    ska_root : C'est pas drôle, tu lui as donné la solution à ne pas utiliser...
    errare humanum est


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/12/2011, 09h53
  2. Réponses: 2
    Dernier message: 26/03/2008, 14h59
  3. Extraction de tous les Lundis du mois dans une requête
    Par cumpa100 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 07/02/2008, 14h15

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