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 de mots reciproques [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut Remplacement de mots reciproques
    Bonjour,
    cela fait qques jours que je galére a trouver la solution a ce problème en vain :s
    Je vous explique, peut être aurais vous une début de piste ?!

    j'ai une liste d'expression, associées a un synonyme
    ex : "chat => minou" et inversement "minou => chat"

    imaginons ce texte : "Un chat boit son lait"
    Le soucis, c'est que lors de mon preg_replace(); le mot chat ne change pas

    A mon avis la fonction doit remplacer "chat" par "minou" et sur-remplacer "minou" par "chat" ! Donc le changement est null

    Pourriez vous m'aider à résoudre ce problème ?

    Merci d'avance

    Julien

  2. #2
    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
    utilise le paramètre de limite

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Quel est ton code actuel ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    utilise le paramètre de limite
    Je ne souhaite pas utiliser la limite car il peut y avoir plusieurs fois le mots


    Je vais essayer d'etre plus precis :

    mon texte pur "le chat boit du lait avec son pote chat le minou"
    mon texte apres traitement : "le chat boit du lait avec son pote chat le chat"

    Il change bien minou par chat mais pas chat par minou


    j'ai 2 tables sql
    1> les expressions (exp)
    2> les synonymes (syn)

    je recherche dans le texte les expressions qui sont dans ma table "exp"
    je met dans un tableau les expressions trouvés ainsi que les synonymes

    $arr['exp'] et $arr['syn']

    le code de remplacement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $r = preg_replace($arr['exp'],$arr['syn'], $texte);
    edit :
    J'aimerai me retrouver avec ce resultat :
    "le minou boit du lait avec son pote minou le chat"

  5. #5
    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
    dans ce cas la il faut faire le remplacement séquentiellement donc avec plusieurs preg_replace

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    dans ce cas la il faut faire le remplacement séquentiellement donc avec plusieurs preg_replace
    je vois pas comment faire ca aurais tu un debut de piste ?

    Merci

  7. #7
    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
    je me lancé dans ça, mais je suis pas convaincu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $str = 'le chat boit du lait avec son pote chat le minou';
     
    $old = array('/\bchat\b/', '/\bminou\b/');
    $new = array('minou', 'chat');
     
    $words = preg_split('/\b/', $str);
     
    foreach($words as &$word)
    {
        $word = preg_replace($old, $new, $word, 1, $count);
     
        if($count > 1)
        {
            $word = preg_replace(array_reverse($old), array_reverse($new), $word);
        }
    }
     
    echo implode($words);

+ 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