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 :

changer la première occurrence d'une chaîne de caractères [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut changer la première occurrence d'une chaîne de caractères
    Bonjour

    J'ecris dynamiquement une requête sql, Je pakce les conditions were dans une variable tableau que je concatène ensuite
    voila la code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    if(!empty($this->where_ar)){
    		// on enlève l'opérateur éventuel de la première condition
    		$this->where_ar[0] = <div class="bbcode_container">
    	<div class="bbcode_quote">
    		<div class="quote_container">
    			<div class="bbcode_quote_container"></div>
     
    				ereg_replace("^OR |AND "," ", trim($this->where_ar[0]));
     
    		</div>
    	</div>
    </div>		$where_str = " WHERE ".implode($this->where_ar, " ");		
    	}
    Mon soucis vient de
    ereg_replace("^OR |AND "," ", trim($this->where_ar[0]));
    Je me retrouve dans un cas avec
    AND n.Date_Cat <= '2008-09-01' AND (n.Date_FinCat >= '2008-09-01' OR n.Date_FinCat IS NULL)
    lorsque j'applique ereg_replace, il me remplace l'ensemble de AND alors que je voudrais supprimer que le premier

    Comment faire pour ne changer que la première occurrence?
    Merci de votre aide

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut
    Bonjour,

    e viens de voir qu'il existe preg_replace() qui gère des limites. J'ai donc mis ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	if(!empty($this->where_ar)){
    		// on enlève l'opérateur éventuel de la première condition
    		//$this->where_ar[0] = ereg_replace("^OR |AND "," ", trim($this->where_ar[0]));
    		$this->where_ar[0] = preg_replace("^OR |AND "," ", trim($this->where_ar[0]),1);
    		$where_str = " WHERE ".implode($this->where_ar, " ");		
    	}
    et cette fois-ci j'obtiens comme résultat
    Warning: preg_replace() [function.preg-replace]: No ending delimiter '^' found in

    Quelque chose m'aurait il échappé?
    Merci de votre aide

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 291
    Par défaut
    avec les fonctions preg_, la regex doit être encadrée, par exemple /blabla/, #blabla#, {blabla}, ou encore ^blabla^... Tu dois donc écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->where_ar[0] = preg_replace("/^OR |AND /"," ", trim($this->where_ar[0]),1);

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut
    j'ai trouvé la réponse moi -même en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->where_ar[0] = preg_replace("/^OR |AND /"," ", trim($this->where_ar[0]),1);

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut
    Merci Antoun, nos message ce sont croisés

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

Discussions similaires

  1. [XL-2007] Total d'occurrences d'une chaîne de caractères
    Par laurentSc dans le forum Excel
    Réponses: 4
    Dernier message: 18/05/2013, 18h36
  2. Réponses: 0
    Dernier message: 17/09/2012, 20h00
  3. Compter les occurrences d'une chaîne dans une feuille
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/11/2008, 08h59
  4. Réponses: 1
    Dernier message: 01/11/2006, 19h20

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