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 :

Remplacement dynamique avec preg_replace


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Par défaut
    Bonjour,

    merci de lire mon post.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    //preg_replace("/".$pattern."/", $replace , $subject );
    preg_replace("/a/", "d", "abc abc");
    //ça va nous donner "dbc dbc"
    Ma question est, comment faire pour modifier le $replace après chaque occurrence ? c'est à dire après avoir remplacé le 1er 'a' par 'd', remplacer le 2nd 'a' par 'e' par exemple.

    Pour avoir quelque chose comme "dbc ebc"

    Merci

    quelqu'un connais peut être une autre fonction qui pourrais faire ce que je cherche à faire ?

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par luc648 Voir le message
    Ma question est, comment faire pour modifier le $replace après chaque occurrence ? c'est à dire après avoir remplacé le 1er 'a' par 'd', remplacer le 2nd 'a' par 'e' par exemple.
    le changement se fait en fonction de quoi ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Par défaut
    quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for( $i etc...){
     
    preg_replace("/".$matrice[$i][0]."/", $matrice[$i][1], $subject_body);
     
    }
    //Le problème est que preg_replace, change tout les éléments du $subject_body, et donc au final tout est remplacé par le dernier élément de mon tableau ... j'aimerais pouvoir remplacer qu'un seul élément avant d'avancer dans le tableau.


    j'ai trouvé http://php.net/manual/fr/function.pr...e-callback.php mais j'ai du mal a comprendre le fonctionnement.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    il faut utiliser le paramètre limit

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Par défaut
    Merci pour ta réponse ! limit fonctionne bien pour limiter le nombre d'occurrence total a remplacer .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for( $i etc...){
     
    preg_replace("/".$matrice[$i][0]."/", $matrice[$i][1], $subject_body, 3);
    //remplace les 3 premières occurrences
     
    }
    mais je n'arrive pas a faire fonctionner limit du genre [2,4] , c'est a dire remplacer a partir de la 2eme occurrence jusqu'à la 4ieme occurrence, as tu une idée ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Par défaut
    Message à l'attention de ceux qui chercherait a faire la même chose, il semblerait qu'il soit tout simplement impossible d'utiliser une limit du genre [2,4] avec preg_replace.

    Bonne chance.

Discussions similaires

  1. [RegEx] Rechercher/remplacer avec preg_replace
    Par olbouss dans le forum Langage
    Réponses: 5
    Dernier message: 13/01/2009, 12h00
  2. [RegEx] Variable "dynamique" avec preg_replace
    Par simonoche dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2007, 10h55
  3. [RegEx] Remplacer une chaîne avec preg_replace
    Par GregPeck dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2005, 12h21
  4. [débutant][Conception] Structure dynamique avec Java
    Par blaiseac dans le forum Général Java
    Réponses: 5
    Dernier message: 18/11/2004, 23h00
  5. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50

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