文字列のphpで検索と置換を行っています。
私の例の文字列が
私の名前はマシュー・スコット・ヘイルウッドです
次に、関数を実行してo
出力を検索すると、次のようになります (読みやすくするために複数行に分割されています)。
My name is
Matthew
Sc<span class="highlight">o</span>tt
Hailw<span class="highlight">o</span><span class="highlight">o</span>d
その部分は完璧に機能します。
私のcssクラスは
.highlight{
font-weight: bold;
background-color: yellow;
border: 1px dotted #a9a9a9;
}
これも完璧に機能します。
ただしoo
、姓などの二重文字の場合、中央の境界線の太さは 2 倍になります。
私がやろうとしているのは、次のいずれかです。2 つある場合は中央の境界線をまとめて削除するか、2 つの境界線を 1 つに折りたたむ可能性が高いです。
私のphp関数は
function highlight($haystack, $needle,
$wrap_before = '<span class="text_highlight">',
$wrap_after = "</span>"){
if($needle == '')
return $haystack;
$needle = preg_quote($needle);
return preg_replace("/({$needle})/i", $wrap_before."$1".$wrap_after, $haystack);
}