キーワードにマッチした部分をハイライト表示する その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; }