正規表現スレから誘導されてきました。
全角・半角を無視して検索文字列をハイライトするいい方法ありませんかね?
パフォーマンスが悪いのは承知で、
$hage = mb_convert_case($hoge, 'asKV')
$hage = preg_replace('/pattern/', '<span class="match">$0</span>', $hage);
$part = preg_split('/(<.+?>)/', $hage, 0, PREG_SPLIT_DELIM_CAPTURE);
$result = '';
$pos = 0;
foreach ($part as $key => $value) {
 if ($key % 2 == 0) {
  if (($len = mb_strlen($value)) > 0) {
   $result .= mb_substr($hoge, $pos, $len);
   $pos .= $len;
  }
 } else {
  $result .= $value;
 }
}
というのも考えてみたけど半角の濁点の処理などをさらに追加せねばならず、大変。
他に思いつくのは検索パターンを'a' => '[aAaA]', 'が' => '(?:ガ|が|ガ)'などに
予め置換しておくのもあるけど、置換用の配列を書くのがダルい。
mb_ereg_replaceかpreg_replaceのオプションで全角半角を無視ってのできないかなあ。