キーワードにマッチした部分をハイライト表示する その2

キーワードにマッチした部分をハイライト表示するのコードで、全角文字に対するハイライト表示が上手くいかなかったので修正。
具体的には、半角文字「t」に対して、「ト」がハイライトされてしまう。


システムの文字コード体系なんかも関連しているとは思うのですが、ここはやはりmb系の関数を使うのが無難だなと思った次第です。

/**
 * キーワードにマッチした部分をハイライト表示できる形式で返します。
 *
 * @param $arr キーワードが格納された配列
 * @param $str ハイライト変換対象の文字列
 * @return ハイライト化された文字列(strongタグで囲む)
 */
function to_highlight_keyword($arr, $str) {
  if (!$arr || count($arr) < 1) { return $str; }
  foreach ($arr as $val) {
    $val = preg_quote($val, '/');
    $str = mb_eregi_replace("<.*?>|($val)", "<strong>\\0</strong>", $str);
  }
  return $str;
}