У меня есть интересная проблема, когда я выделяю текст из массива ключевых слов, используя PHP str_ireplace()
.
Допустим, это мой массив ключевых слов или фраз, которые я хочу выделить из образца текста:
$keywords = array('eggs', 'green eggs');
А это мой пример текста:
$text = 'Green eggs and ham.';
Вот как я выделяю текст:
$counter = 0;
foreach ($keywords as $keyword) {
$text = str_ireplace($keyword, '<span class="highlight_'.($counter%5).'">'.$keyword.'</span>', $text);
$counter++;
}
Проблема в том, что green eggs
никогда не получит совпадения, потому что eggs
уже заменено в тексте следующим образом:
Green <span class="highlight_0">eggs</span> and ham.
В некоторых случаях возможны частичные совпадения, такие как:
$keywords = array('green eggs', 'eggs and');
Что такое умный способ решения этой проблемы?