2017-09-14 9 views
1

그래서이 검색 결과에서 검색 창에 입력 된 단어를 강조 다음 코드/S : 지금PHP 단어의 일부 문자열을 강조 preg_replace이다를 사용하여

$sk = explode(" ",$searchVal); 
    foreach ($searchPostResults as $pagePosts) 
     echo '<li><span class="searchResult"><a href="' 
     . get_the_permalink($pagePosts->ID) . '" title="">' . 
     preg_replace('/\b(' . implode('|', $sk) . ')\b/iu', 
        '<strong class="searchHighlight">\0</strong>', 
        get_the_title($pagePosts->ID)) 
     . '</a></span></li>'; 

가 작동 대부분. 검색 창에 "how to"라는 검색어를 입력하면 단어가 강조 표시됩니다. 이제 샤워와 같은 다른 단어 안에 얼마나 단어, 내가 어떻게 같은 강조하고 싶습니다 :

s<strong class="searchHighlight">how</strong>er 

누구든지 내가이 작업을 수행하는 코드를 조정하는 방법을 알고있다.

건배

+0

@ chris85 트릭을 해 주셔서 감사합니다. \ b가 경계라는 것을 알지 못했습니다. 미래를 염두에 두어야합니다. 감사합니다 챔피언 : –

답변

4

당신이 설명하는 동작은 대부분의 사람들의 의도를 반대하고 정규 표현식은 그 안에 \b을 가지고 아마 이유. \bword boundary이며 완전한 단어 일치 만 사용할 수 있습니다. \b을 제거하면 제대로 작동합니다. 캡처 그룹도 필요하지 않습니다.

preg_replace('/' . implode('|', $sk) . '/iu', 
+1

곧 새로운 클럽에 합류하게됩니다. 크리스 ;-) 잘 설명 된 대답 btw. –

+1

* Wwwwwwwwwww! * –

+1

@ Fred-ii- 고마워, 여기 좋네. – chris85