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} *を持っていないのはなぜ?パターンの一部? "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); 
} 
関連する問題