Bonsoir à tous !
voila je me creuse la tete depuis pas mal de temps sur un probleme avec une expression reguliere pour un preg_replace
Dans la chaine testée je voudrai extraire un mot precis (appelons mot! lol), verifier qu'il n'est pas contenu dans une balises <a></a> (pas forcement tout seul), et si le transformer en lien (d'ou la verif precedente)
Mon masque semble fonctionner plutot bien sauf que, si le mot en question est précédé ou suivi d'un espace ou d'une ponctuation, et bien cet espace ou cette ponctuation est 'inclus' dans mon lien
en gros au depart j'ai :
" bonjour voici le mot à trouver !"
et apres traitement :
" bonjour voici le<a href="monsite.com"> mot </a>à trouver"
voici le motif en question ( le [[:alpha:]]{0,1} c'est pour un eventuel pluriel car je cherche 'mot' ou 'mots')
preg_replace("[([^\<a.*?\>]".$motatrouver."[[:alpha:]]{0,1})[^\</a\>]]", '<a href="#">$0</a>',$chaine);
Si quelqu'un a une suggestion, parce que j'ai beau me triturer les neurones avec divers docs (excellentes au passage) et faire des tests a tour de bras, rien n'y fait, je suis d'autant plus etonné que si je fais la meme chose sans me préoccuper des balises <a> (autrement dit si le mot etait dans une balises <a> elle se retrouve doublee) et bien ca ne prend que le mot lui meme et pas le caractere precedent ou suivant
en vous remerkiant
Partager