项目中需要搜索简体字或者繁体字 都能够搜到相应的内容,搜索用的又是SPHINX,没法在搜索中修改程序,只能在搜索之前的关键字做出修改了。
于是想到将搜索的关键字不论是简体还是繁体 一律转换成繁体 ,然后在对内容进行搜索。
由于项目网站是繁体的,所以这样做,但如果真要搜简体的内容,就搜不到了~
网上大多数的函数都需要一个TABLE转换表,但没有找到。。不过还是通过坚持不懈的努力找到了一个:
地址:https://github.com/grick/auto-tag-slug/blob/master/class.Chinese.php
使用起来还是很方便的,里面有DEMO。
不过我需要使用的是 UTF8中文字转换为BIG5繁体字再转换为UTF8繁体字
这个过程中 ,直接将 UTF8转换成BIG5会出错。。可能简繁转换还是GB2312到BIG5会好些吧
于是我的流程是这样的:
private function iconvKey($wd)
{
if (empty($wd)) return '';
# 加载转换类
if (!class_exists('Chinese')) {
loader::lib('Chinese', 'search');
}
if ( is_dir( dirname(__FILE__) . '/../lib/chinese/config/') ) {
$table = dirname(__FILE__) . '/../lib/chinese/config/';
}
$chs = new Chinese('UTF8', 'GB2312', $wd, $table );
$str = $chs -> ConvertIT(); # GB2312
$chs = new Chinese( 'GB2312', 'BIG5', $str, $table );
$str = $chs -> ConvertIT(); # BIG5
$chs = new Chinese( 'BIG5', 'UTF8', $str, $table );
return $chs -> ConvertIT();
}
要是有更好更简便的方式来转换、求赐教~