Regex trouve des mots qui ne sont pas suivis par une lettre

Je bouclage une string de text (en php) pour modifier certains mots keys dans une database en liens. Le problème est lorsque les mots dans la database existent entre eux, tels que:

développer, développer, développer …

Je finis par:

"Random ssortingng with the word <a href="developer"><a href="develop">develop</a>er</a> in it" 

J'aurais besoin de cela pour seulement envelopper une label autour du développeur et non le développement en elle …

Voici ma fonction actuelle:

 function hyper($haystack){ $query = "SELECT * FROM `hyperwords` "; $query .= "WHERE `active` = '1' "; $query .= "ORDER BY LENGTH(hyperword) DESC "; $result = mysql_query($query); while($row = mysql_fetch_array($result)){ $needle = $row['hyperword']; $link = $row['link']; $haystack = preg_replace("/($needle)/iu", "<a class='meta' href='$link'>$1</a>", $haystack); } return $haystack; } 

Merci d'avance!!!

 $altered = preg_replace("/\b($needle)\b/iu", "<a class='meta' href='$link'>$1</a>", $altered); 

est ce dont vous avez besoin 🙂

Le métacaracter \ b est une ancre comme le caret et le signe dollar. Il correspond à une position appelée «limite de mots». Cette partie est nulle.

voir ici pour plus d'informations 🙂