Recherche d'un mot avec un REGEX et mettre en surbrillance

Résolu
Messages postés
20
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
14 août 2012
-
Messages postés
20
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
14 août 2012
-
Bonjour,

Je recherche la bonne manière d'écrire un regex me permettant de trouver un mot dans une phrase.

Si je cherche le mot "mal", je veux trouver seulement les mots "mal" et non les autres qui conntienent ce mot, ex.: malade, maladie, etc.

Ce que je veux faire aussi, c'est de mettre en rouge le mot à l'affichage de mon enregistrement.

J'ai cherché et j'ai trouvé des solutions pour la recherche mais pour la couleur, le mal de maladie était en rouge ;-(

Merci de votre aide...

8 réponses

Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
19
Alors remplace les \s par \b
<hr size="2" width="100%" />Neige

Blog
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Salut,

Il suffit d'ajouter une séquence d'espacement avant et après le mot à matcher :

echo preg_replace('#\s(word)\s#', '$1', $sentence);
Messages postés
20
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
14 août 2012

Merci !
Messages postés
20
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
14 août 2012

J'y arrive presque mais le problème de ce code, si je ne me trompe pas, c'est que si la phrase commence ou ce termine par "mal", le mot ne sera pas en rouge. Il y a t'il une autre solution ???
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
19
Salut,

Prends un peu de temps pour lire la doc, tu constateras que les \s correspondent à n'importe quel caractère blanc (espace, tabulation, etc). Enlève les, et ça fonctionnera dans tous les cas.

<hr size="2" width="100%" />Neige

Bloghttp://fr.php.net/manual/fr/
Messages postés
20
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
14 août 2012

Si j'enlève le \s, je reviens au problème de mon premier message. Si je cherche le mot "mal", je vais avoir malade, maladie, etc. Je veux seulement le mot "mal" en rouge et non les autres qui contiennent ce mot.
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Il faut ajouter une séquence contenant les caractères de ponctuation en plus des caractères d'espacement.
Messages postés
20
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
14 août 2012

Parfait. Merci pour votre aide !