Результаты поиска, помогите с регулярным выражением
Есть кастомный поиск, где у каждого слова отрезаются окончания (такая вот интересная «морфология») и ищется по тексту в базе, при помощи AND и %нестрогого_совпадения%.
Требуется подсвечивать ключевые слова, по которым производился поиск, красным цветом ( http://joxi.ru/DmBlVWJfz6ZovA ), написал подобную функцию, которая оборачивает текст по регулярке в <span> и подкрашивает его:
function highlightWords($text, $words = [], $style="color:#E01F1F;font-weight:bold;"){
foreach($words as $thisWord){
$text = preg_replace('/('. preg_quote($thisWord) .')/i', '<span style="'.$style.'">\\0</span>', $text);
}
return $text;
}
Есть два вопроса, на предыдущем скрине обозначил цифрами:
Строка не попадает из-за различного кейса букв (lowercase, upercase) можно ли как-то искать регуляркой не учитывая кейс?
Так как морфология отрезает окончания, можно ли как-то добиться выделения всего слова, даже с другим окончанием? На сколько знаю, регулярки очень тонкий инструмент, и там можно учитывать предыдущие\последующие символы, или мб кроме регулярок есть какое то решение? Сам придумал с str_pos (mb_strpos) типа вычислять положения символов и тд, потом подставлять спаны, но кажется слишком сложным решением...