2017-01-02 42 views
2

以下是我的代碼,我想突出顯示一個完整的單詞和一個部分單詞。下面的代碼只是突出顯示全部是字,而不是部分字。我們如何在PHP中突出顯示完整的單詞和部分單詞?

例如:

$text = "this is a very famouse poem written by liegh hunt the post want to impress upon the importance"; 

$words ="very written hu want impor"; 

我想輸出象下面這樣: -

「這是一個非常的中國名牌詩通過liegh 書面 hu nt後想要打動重要 tance「;我爲它創建

功能: -

function highlight($text, $words) { 
    preg_match_all('~\w+~', $words, $m); 
    if(!$m) 
     return $text; 
    $re = '~\\b(' . implode('|', $m[0]) . ')\\b~i'; 
    return preg_replace($re, '<b style="color:white;background-color:red;border-radius:2px;">$0</b>', $text); 
} 
+1

刪除'\ B'如果你不想全字匹配。請參閱https://ideone.com/cMXG0M –

+0

如果$字符串包含部分和完整的單詞,那麼我想突出部分和全部單詞突出顯示。 – alex

+1

那麼,這個詞邊界有什麼好處呢? –

回答

1

停止使用正則表達式掙扎,當你在PHP中有內置的功能。

與純php相同的功能。不使用正則表達式,忽略大小寫。

<?php 

$words = "very written hu want impor"; 
$words = explode(' ', $words); 

function hilight($text, $words){ 
    foreach ($words as $value) { 
    $text = str_ireplace($value,'<b style="color:white;background-color:red;border-radius:2px;">'.$value.'</b>',$text); 
    } 
    return $text; 
} 

$text = "this is a very famouse poem written by liegh hunt the post want to impress upon the importance"; 
echo hilight($text, $words); 

?> 

enter image description here