2016-07-28 3 views
0

문자열의 일치하는 부분을 강조하는 방법 :이것은 PHP에서 내 현재 함수 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 
+2

왜의 \ P {L} *이 있습니까? 패턴의 일부? 왜 그냥'return preg_replace ("/". preg_quote ($ keyword). "/" $ 0 ", $ string)" –

+0

@BrandonHorsley 네 말이 맞아. 귀하의 답변은 아래 첫 번째 답변보다 훨씬 간단합니다. – andufo

+1

정적 값과 일치시키기 위해 정규 표현식을 사용할 필요가 없습니다. 대문자와 소문자가 구별되지 않는 경우,'return str_replace ($ keyword, ''. $ keyword. '', $ string),' – chris85

답변

0

를 사용하여 캡처 그룹 :

function highlight_keywords($keyword, $string) { 
    return preg_replace("/(\p{L}*?)(".preg_quote($keyword).")(\p{L}*)/ui", "$1<span class=\"h\">$2</span>$3", $string); 
}