Это моя текущая функция в php:
function highlight_keywords($keyword, $string) {
return preg_replace("/\p{L}*?".preg_quote($keyword)."\p{L}*/ui", "<span class=\"h\">$0</span>", $string);
}
Класс CSS:
span.h {
font-weight: 700;
color: @color_action;
}
Пример:
echo highlight_keywords('anto', 'Andres Santos');
Проблема в том, что результат:
Andres <span class="h">Santos</span>
…и это должно быть:
Andres S<span class="h">anto</span>s
Используйте группы захвата:
function highlight_keywords($keyword, $string) {
return preg_replace("/(\p{L}*?)(".preg_quote($keyword).")(\p{L}*)/ui", "$1<span class=\"h\">$2</span>$3", $string);
}
Других решений пока нет …