Результаты поиска, помогите с регулярным выражением

Есть кастомный поиск, где у каждого слова отрезаются окончания (такая вот интересная «морфология») и ищется по тексту в базе, при помощи 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;

}

Есть два вопроса, на предыдущем скрине обозначил цифрами:

  1. Строка не попадает из-за различного кейса букв (lowercase, upercase) можно ли как-то искать регуляркой не учитывая кейс?

  2. Так как морфология отрезает окончания, можно ли как-то добиться выделения всего слова, даже с другим окончанием? На сколько знаю, регулярки очень тонкий инструмент, и там можно учитывать предыдущие\последующие символы, или мб кроме регулярок есть какое то решение? Сам придумал с str_pos (mb_strpos) типа вычислять положения символов и тд, потом подставлять спаны, но кажется слишком сложным решением...


Ответы (0 шт):