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 :

Problème preg_replace mot exact [RegEx]


Sujet :

Langage PHP

Vue hybride

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

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Par défaut Problème preg_replace mot exact
    Bonjour à tous,

    J'ai un petit soucis, je cherche à remplacer grâce à preg_replace un mot exact dans une chaine.

    $ancien = "Je possède plusieurs espèces de chat";
    $origine = array("/espèce/", "/chat/");
    $remplace = array("races", "chien");
    $nouveau = preg_replace($origine, $remplace, $ancien);

    Dans voilà, dans mon exemple, la fonction reg_replace va remplacer espèces par racess, j'aimerais bien arriver à reconnaître la sous chaîne exact pour ne la remplacer que si elle colle.

    J'ai parcouru le forum mais je n'ai rien vu encore pour m'aider.

    Merci d'avance.

    Arnaud

  2. #2
    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
    Utilisez alors le délimiteur de mot \b :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $origine = array("/\bespèce\b/", "/\bchat\b/");

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

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Par défaut
    Merci

    J'ai réussi à rajouter la détection des plurielles et des féminins.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nouveau = preg_replace( '/\b('.$origine.')+(?:|s|e|es)\b/i', '$remplace', $ancien);
    J'avance bien, mon but final étant d'insérer des liens à la volée vers une définition d'un glossaire.

    J'ai voulu tenter ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nouveau = preg_replace( '/\b('.implode('|', $origine).')+(?:|s|e|es)\b/i', '<a href="'.XOOPS_URL.'/definition-'.$entryID.'-'.rewrite($1).'.html" title="'.$1.'"'.$thetarget.$styletoembellish.'>$0</a>', $ancien);
    Mais il y a un bug.

    En tout cas, encore merci, ça m'a permis de bien avancer cette aprem.

  4. #4
    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
    Si vous avez besoin de faire évaluer la chaîne de remplacement qui est du code PHP à exécuter lors de chaque remplacement il faut s'orienter vers la fonction preg_replace_callback (préférable) ou le modificateur e. Je vous laisse faire des recherches, nous l'expliquons régulièrement

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Par défaut
    Encore merci

    J'ai encore bien avancé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $ancien = "espèces et soiesr";
    $origine = array("espèce", "soies");
    function remplace($matches)
    {
      $essai = '<a href=\"'.XOOPS_URL.'/definition-'.$matches[1].'.html\" title=\"'.$matches[1].'\"'.$thetarget.$styletoembellish.'>'.$matches[0].'</a>';
      return $essai;
    }
    $nouveau = preg_replace_callback('/\b('.implode('|', $origine).')+(?:|s|e|es)\b/i','remplace', $ancien);
     
    echo $ancien;
    echo "<br /><br /><br />";
    echo $nouveau;

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

Discussions similaires

  1. Problème de mot de passe : Connexion Access
    Par digital prophecy dans le forum Bases de données
    Réponses: 12
    Dernier message: 13/06/2012, 10h23
  2. petit problème de mot de passe crypté PASSWORD()
    Par bris dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 09/02/2007, 16h01
  3. [RegEx] Problème preg_replace
    Par V_R46 dans le forum Langage
    Réponses: 2
    Dernier message: 10/05/2006, 21h15
  4. Problème de mot de passe
    Par Jo14 dans le forum Access
    Réponses: 1
    Dernier message: 15/04/2006, 10h51
  5. Phrase et mot exacte
    Par Tigris94 dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/07/2004, 10h24

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