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 :

Remplacements de mots interdits [RegEx]


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
    Mars 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Par défaut Remplacements de mots interdits
    Bonjour,

    J'ai un soucis avec une fonction de remplacement. Je souhaite remplacer certains mots contenu dans mon tableau $FILTRE par la valeur correspondante dans $FILTRE2.

    Dans $FILTRE j'ai 2 cas possibles :

    - Mots genre "tutu" : remplacement de tout mot "tutu";
    - Mots genre "tut*" : remplacement de tous les mots commencant par "tut";

    Voici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    foreach ($FILTRE as $key => $value) {
            if($value[strlen($value)-1] == "*") { 
    		$rep="".str_replace("*","",$value)."[[:alnum:]]*";
                	$msg=ereg_replace($rep,$FILTRE2,$msg);
    	}
    	else { 
    		$rep="#".$value."#i";
    		$msg=preg_replace($rep,$FILTRE2,$msg);
    	}
    }
    Mon problème est que lorsqu'un mot interdit est inclu à un mot comme "nique" dans "veronique", ça remplace également... Je voudrais donc que la vérif se fasse uniquement sur les mots et ne prenne pas en compte les bouts de mots.

    Merci de votre aide.

    Alex

  2. #2
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Dans ce cas, rajoute un espace avant et après ta value dans la chaine de la regex
    Il ne remplacera plus que les mots entiers

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Par défaut
    Il ne sera pas pris en compte dans le cas où il se trouve en début ou fin de phrase aussi ..

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Par défaut
    Dans ce cas il faut que tu t'assures de l'absence de caractère alpha-numérique et du tiret avant, et après ton expression, l'absence de ponctuation.

    Pour ce faire, tu dois rajouter
    en début d'expression et
    en fin d'expression.

    Pour plus d'informations sur les assertions négatives, voir ici

  5. #5
    Membre expérimenté

    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
    Par défaut
    Et plus simplement, \b, le délimiteur de mot ne convient pas dans ce cas ?

    Le motif \bnique\b cherchera le mot exact nique. Il n'y aura pas correspondance dans véronique, pour reprendre votre exemple

    (valable uniquement avec les fonctions PCRE)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Par défaut
    Parfait tout fonctionne, merci

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. [RegEx] motif pour remplacer un mot dans du code HTML ...
    Par r-zo dans le forum Langage
    Réponses: 6
    Dernier message: 31/03/2006, 13h31
  3. Par quoi remplacer le mot Démarrer?
    Par sourivore dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 08/03/2006, 14h08

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