подстановка регулярных выражений в верхнем и нижнем регистре

Учитывая следующую простую функцию (для страницы PHP), я пытаюсь сопоставить все вхождения слова $marker в длинной текстовой строке. Мне нужно выделить его происшествия.
Функция работает, но она представляет две проблемы:

1) он не соответствует прописным буквам $marker

2) он также соответствует частичным случаям: если $ marker равен «Изобразительное искусство«, функция, как она есть, также соответствует»художественный» а также «телега».

Как я могу исправить эти два неудобства?

function highlightWords($string, $marker){
$string = str_replace($marker, "<span class='highlight success'>".$marker."</span>", $string);
return $string;
}

2

Решение

Чтобы решить две проблемы, вы можете использовать preg_replace() с регулярным выражением. Просто добавьте i флаг для поиска без учета регистра и добавления \b границы слова вокруг вашего поискового запроса, поэтому он не может быть частью другого слова, например

function highlightWords($string, $marker){
$string = preg_replace("/(\b" . preg_quote($marker, "/") . "\b)/i", "<span class='highlight success'>$1</span>", $string);
return $string;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]