Surligner des mot dans un texte en php
function highLight($words, $str) { $highlight = '<strong>$0</strong>'; $pattern = '#(?!<.*?)(%s)(?![^<>]*?>)#i'; foreach($words as $word) { $word = preg_quote($word); $regex = sprintf($pattern, $word); $str = preg_replace($regex, $highlight, $str); } return $str; } |
Utilisation:
$words_to_hl = array('clovis', 'franc'); echo highLight($words_to_hl, 'Tu m\'etonnes que Clovis a eclate tt le monde en son temps, les anciens Francs etaient 655 fois plus nombreux.'); |
Ce qui nous donne:
Tu m’etonnes que Clovis a eclate tt le monde en son temps, les anciens Francs etaient 655 fois plus nombreux.
Voir ce bout de code en action sur quote de porc.