2017-09-14 55 views
1

所以我有以下的代碼,突出了字/秒這是在搜索結果輸入到搜索欄: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」,突出顯示單詞how。 現在,如果這個詞是怎麼樣的淋浴另一個詞裏面,我想強調如何像這樣:

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

有誰知道我可能會調整代碼來做到這一點。

乾杯

+0

@ chris85謝謝你做了詭計,沒有意識到\ b是邊界。將來需要牢記這一點。感謝冠軍:) –

回答

4

您所描述的行爲是大多數人的意圖相反,並可能就是你的正則表達式中有該\b\b是一個word boundary並使它,所以你可以只有完整的單詞匹配。刪除\b s它應該工作。你也不需要捕獲組。

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

你很快就會加入新的俱樂部克里斯;-)很好解釋答案btw。 –

+1

* Wwwwwwwwwwwink!* –

+1

@ Fred-ii-謝謝,這裏很好。 – chris85

相關問題