Problème avec une regex :(
5 messages
• Page 1 sur 1
-

medium69 - WRInaute passionné

- Messages: 2485
- Inscription: 7 Mai 2005
Problème avec une regex :(
J'ai besoin de chercher certain mots dans une chaine afin de les mettre en gras.
Le problème c'est que le premier mot et le dernier mot de la chaine en question ne sont pas mis en gras.
Je pourrais le contourner en ajoutant un espace avant et après la chaine mais on doit bien pouvoir faire autrement.
A l'aide !!!
Voici mon bout de code :
Le problème c'est que le premier mot et le dernier mot de la chaine en question ne sont pas mis en gras.
Je pourrais le contourner en ajoutant un espace avant et après la chaine mais on doit bien pouvoir faire autrement.
A l'aide !!!
Voici mon bout de code :
- Code: Tout sélectionner
preg_replace('/([^a-zA-Z])('.$mot.')([^-a-zA-Z])/i', '$1<strong>$2</strong>$3', $chaine)
- Code: Tout sélectionner
preg_replace('/([\s,\.()])('.$mot.')([\s,\.()])/i', '$1<strong>$2</strong>$3', $chaine)
-

medium69 - WRInaute passionné

- Messages: 2485
- Inscription: 7 Mai 2005
Xele a écrit:Essaye ca :
preg_replace("/\b".$mot."\b/i", "<strong>$2</strong>", $chaine);
Merci...
Dire que je me suis pris la tête pendant un moment pour trouver.
Pour info, ce que j'ai besoin est ceci :
- Code: Tout sélectionner
preg_replace('/(\b)('.$mot.')(\b)/i', '$1>strong>$2</strong>', $chaine);
$mot = une chaine de caractère du genre :
$mot = 'une expression à mettre en gras|une autre|mot|expression|etc';
Pour le moment, j'insérais du BBcode dans ma base de donnée pour intéragir avec certains mots [ b ] mot à mettre en gras [ /b ] par exemple.
Hormis le fait que c'est chiant d'ajouter ce BBcode d'une part et que les mots à mettre en gras peuvent être différent suivant le contexte de la page, j'ai donc créer un champ dans ma BDD dans lequel j'insère les mots et expressions à mettre en exergue suivant le contexte ou la page.
D'où l'intérêt de ma demande.
Par contre dans le même ordre d'idée, j'aurais besoin d'une fonction similaire pour mettre un lien sur certain des mot de mon site qui enverrais vers mon glossaire.
Pour cette pratique, je souhaite que le llien n'apparaissent que sur la première occurence d'un mot présent dans $mot contrairement à la mise en exergue.
De mes test, si je limite à une occurence le changement, il me change que le premier mot qu'il rencontre parmi ceux de la liste si je ne veux pas passer par une boucle.
Comment faire pour éviter de créer une boucle en traitant les mots ou expressions séparément avec preg_replace ??
5 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


