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 :

Probleme avec expression réguliere


Sujet :

Langage PHP

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut Probleme avec expression réguliere
    Bonsoir,
    en fait , je me trouve face a un probleme qui me bloque depuis maitnenant trop longtemps.
    je m'explique, j'ai une chaine de caractère de type
    [text1 text2 text3] et/ou de type [text1] et/ou de type [text1 text2]

    J'ai dans mon code un tableau qui contient les expressions suivantes:
    $tab= array('text1','text2','text3');

    Maintenant ce que je voudrais faire,
    c'est que des qu'on rentre dans un des types que j'ai défini plus haut, je puisse remplacer text1 par text1.jpg sans rien changer au reste.
    Donc passer de:
    [text1 text2 text2] à [text1.jpg text2.jpg text3.jpg]

    Par contre:
    text2 ne doit pas donner text2.jpg (car pas de crochets).
    etc...

    Je me suis penché sur ereg mais je tourne en rond sans rien trouver qui aillent.
    Un peu d'aide donc me soulagerait.
    Merci d'avance.

  2. #2
    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 : 55
    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,

    j'ai pas approfondi (vu l'heure, c'est normal ) mais ça fonctionne, enfin je crois que cela répond à ton attente, c'est le principal en soi... faudrait voir pour l'améliorer. mais commence déjà par le comprendre

    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
     
    <?php
     
    /* callback */
    function modifie($matches) {
     
       $toReturn     = '';
       $nb_elements  = count($matches);
     
       for ($i=0;$i<$nb_elements;$i++) {
          if ($i != 0) 
             $toReturn .= ($matches[$i].".jpg");
          if ($i != 0 && $i != $nb_elements) 
             $toReturn .= " ";  
       }
     
       return $toReturn;
    }
     
     
    // expression reguliere
    $reg = "`\[(text[0-9]+)\s?(text[0-9]+)?\s?(text[0-9]+)?\]`";
     
    // phrase test
    $texte = "Bonjour ceci [text13] text1 est un simple [text1 text2] test pour voir si [text1 text2 text3] tout fonctionne text1 comme text3 prévu";
     
    // execution
    echo preg_replace_callback($reg,"modifie",$texte);
     
    ?>

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Variation sur le même thème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function myJpg($captures){
      return preg_replace('#text[0-9]+#', "$0.jpg", $captures[0]);
    }
     
    echo preg_replace_callback('#\[[^]]*\]#', 'myJpg', $texte);
    Ici j'ai conservé les crochets car il me semble que c'était demandé dans le post de Raideman.

    S'ils ne sont pas nécessaires:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function myJpg($captures){
      return preg_replace('#text[0-9]+#', "$0.jpg", $captures[1]);
    }
     
    echo preg_replace_callback('#\[([^]]*)\]#', 'myJpg', $texte);
    Edit: rajout si crochet pas nécessaires.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Merci, vos solutions m'ont permis de trouver la mienne .
    J'ai un peu modifié pour adapter et j'ai bien compris grace a vous.
    Merci.

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

Discussions similaires

  1. probleme avec expression rationelle
    Par blaise4714 dans le forum Langage
    Réponses: 2
    Dernier message: 11/03/2009, 14h15
  2. Switch case avec expression réguliere
    Par neptunia dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2008, 12h51
  3. P'tit probleme avec express et procedure stockée
    Par Poulain dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/06/2007, 15h47
  4. [RegEx] Remplacement avec Expressions régulieres
    Par TmR14 dans le forum Langage
    Réponses: 8
    Dernier message: 24/01/2007, 22h28
  5. probleme avec expression reguliere
    Par naourass dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/11/2005, 12h15

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