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 :

Preg_Replace et Array [RegEx]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Preg_Replace et Array
    Bonjour,

    J'ai un petit problème avec la fonction preg_replace. En effet, je souhaiterai remplacer {lang:une_valeur} par la valeur de : $lang_vars['une_valeur']. (tout est dans une fonction qui elle même est dans une classe...)

    Voici ce que j'ai fait (suite a la consultation d'un tutoriel sur un forum...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_object = preg_replace ( "/\{lang:(.*)\}/" , "\$lang_vars['//1']}" , $object );
    Mais cela me retourne "$lang_vars['une_valeur'] et non la valeur. Mais si j'enlève l'anti-slash j'ai cette erreur :

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
    Pouvez-vous m'aider ?

    Amicalement,
    nico.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Bonjour Nico,

    Je connais preg_replace mais je pense que tu peux essayer ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_object = preg_replace ( "/\{lang:(.*)\}/".$lang_vars['//1'].$object);
    J'espère que ca t'aidera

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 270
    Points : 163
    Points
    163
    Par défaut
    moi je pense que ça vient du //1 ==> \\1 ?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Hello,

    moi je pense que ça vient du //1 ==> \\1 ?
    Je viens d'essayer : toujours le même résultat

    Bonjour Nico,

    Je connais preg_replace mais je pense que tu peux essayer ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_object = preg_replace ( "/\{lang:(.*)\}/".$lang_vars['//1'].$object);
    J'espère que ca t'aidera
    J'ai essayé cette commande (en remplacant les . par des , ) et cela me renvoie l'erreur suivante :

    Notice: Undefined index: \1

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    J'ai trouvé une solution, je la poste ici, ca pourra peut etre aider quelqu'un d'autre :

    J'ai créé une fonction qui retournera le mot désiré .

    $new_object = preg_replace ( "#\{lang.*)\}#ies" , "\$this->get_word('\\1')" , $object );

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Re-Bonjour,

    En fait, cela ne fonctionne pas tout a fait. En effet, ce regex me prend le premier { et se termine à la fin de ma chaine (et non au } suivant.). Pouvez-vous m'aider ?

    Merci d'avance.
    Nico.

  7. #7
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, pour éviter la tendance "gourmande" de ta regex, tu peux utiliser l'option de recherche U ; ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_object = preg_replace ( "#\{lang:(.*)\}#iesU" , "\$this->get_word('\\1')" , $object );
    J'espère que le souci vient de là

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

Discussions similaires

  1. [XSL][ARRAY]
    Par miloud dans le forum XMLRAD
    Réponses: 4
    Dernier message: 02/10/2003, 15h46
  2. Erreur "size array"
    Par boobob dans le forum C
    Réponses: 3
    Dernier message: 06/08/2003, 10h18
  3. TStringList en array of string
    Par JediKerian dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2003, 15h37
  4. Réponses: 2
    Dernier message: 23/02/2003, 00h49
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

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