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 :

Remplacer {TRUC.X} par $tableau['X'] [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de ProgVal
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 636
    Points : 764
    Points
    764
    Par défaut Remplacer {TRUC.X} par $tableau['X']
    Bonjour,

    N'étant pas capable d'exprimer correctement ma demande, je ne peux trouver dans Google, ni mettre un titre explicite...
    En gros, je voudrais que toutes les occurrences de {TRUC.X} soient remplacées par $tableau['X'], que {TRUC.blabla} soit remplacé par $tableau['blabla'], etc.

    Merci d'avance,
    ProgVal

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 210
    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 210
    Points : 8 437
    Points
    8 437
    Billets dans le blog
    17
    Par défaut
    Tu peux utiliser une expression rationnelle : http://fr.php.net/pcre
    Doc sur les masques : http://fr.php.net/manual/fr/regexp.reference.php
    Tutos : http://php.developpez.com/cours/?page=langage#regexp
    Bonne lecture

  3. #3
    Membre éclairé
    Avatar de ProgVal
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 636
    Points : 764
    Points
    764
    Par défaut
    Merci pour ta réponse.

    Je connais déjà cela, mais je cherche à faire fonctionner quelque chose de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this_loop=preg_replace('#{TRUC.(.*)}#', $tableau[$1], $this_loop);
    Mais la variable $1 ne marche qu'à l'intérieur d'une chaîne

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il faut utiliser preg_replace_callback (ou le modificateur e) pour exécuter un code lors de chaque remplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function cb_replace($matches) {
        if (isset($GLOBALS['tableau'][$matches[1]])) {
            return $GLOBALS['tableau'][$matches[1]];
        } else {
            return $matches[0];
        }
    }
     
    $tableau = array('X' => '3');
    $this_loop = "J'ai mangé {TRUC.X} pommes";
     
    $this_loop = preg_replace_callback('#\{TRUC\.(.*)\}#U', 'cb_replace', $this_loop);
     
    echo $this_loop;

  5. #5
    Membre éclairé
    Avatar de ProgVal
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 636
    Points : 764
    Points
    764
    Par défaut
    Merci beaucoup! Comme d'habitude sur ce forum: réponse rapide et excellente.

    Et si je veux appeler une méthode d'un objet?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il faut remplacer 'cb_replace', au niveau du preg_replace_callback par :
    • pour une méthode d'instance : array($objet, $nomMethode)
    • pour une méthode de classe : array($nomClasse, $nomMethode)

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

Discussions similaires

  1. Remplacer les FRAMESET par un tableau
    Par DarkPoster14 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/05/2012, 16h06
  2. Remplacer une ligne de tableau par une autre
    Par Tikaway dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/09/2010, 13h50
  3. Réponses: 13
    Dernier message: 01/09/2007, 20h49
  4. [Tableaux] Remplacer les Frame par un tableau?
    Par Malau dans le forum Langage
    Réponses: 3
    Dernier message: 14/01/2006, 16h43
  5. Remplacer plusieurs colonnes par un 'alias'
    Par zestrellita dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/04/2004, 16h51

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