1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?php
$phrase = "a midi il y a de la soupe de poireaux aux vermicelles en trop";
$lesmots = array('soupe', 'poireaux', 'vermicelles');
$sp = array('de', 'la', 'aux', 'avec', 'des');
// contruction de la regex
// où les mots dans $lesmots doivent être tous présent dans l'ordre exact
$quote_lesmots = array_map('preg_quote', $lesmots);
$premier = end(array_splice($quote_lesmots, 0,1));
$reste = implode('(\s+(?2))* ', $quote_lesmots);
$liste_sp = sprintf('(\s+(%s))*', implode('|', array_map('preg_quote', $sp)));
$regex = sprintf('@(?<=\s|^)%s%s %s(?=\s|$)@i', $premier, $liste_sp, $reste);
// baliser
echo preg_replace($regex, '<b>$0</b>', $phrase);
?> |
Partager