Problème avec une regex :(

  • Auteur de la discussion Auteur de la discussion medium69
  • Date de début Date de début
WRInaute passionné
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 :
Code:
preg_replace('/([^a-zA-Z])('.$mot.')([^-a-zA-Z])/i', '$1<strong>$2</strong>$3', $chaine)
ou mieux cela
Code:
preg_replace('/([\s,\.()])('.$mot.')([\s,\.()])/i', '$1<strong>$2</strong>$3', $chaine)
 
WRInaute passionné
Xele a dit:
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:
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 ??
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut